标签: nsmutablearray

将`Class`对象存储到`NSMutableArray`的正确方法是什么?

类型Class不是Objective-C类型.所以将它存放到NSMutableArray外观需要特别小心.这样做的正确方法是什么?

class objective-c nsmutablearray

3
推荐指数
1
解决办法
3892
查看次数

Noob因NSMutable数组的行为而神秘

我是一个菜鸟,试图让我的头脑使用XCode为一个非常简单的Mac应用程序组装一个非常简单的界面.

我尽可能地删除我的应用程序,以说明我遇到的障碍.

我当前的界面包含一个按钮.

在我的AppController.h文件中,我有以下内容:

    @interface AppController : NSObject 
    {
        NSMutableArray *ages;
        int price;
        NSString *culler;
    }
    -(IBAction) handleButtonClick: (NSButton*)sender;

    @end
Run Code Online (Sandbox Code Playgroud)

在我的AppController.m文件中,我使用我的awakeFromNib方法来设置初始值:

    -(void)awakeFromNib
    {
        ages = [NSMutableArray arrayWithObjects: nil];
        [ages addObject: [NSNumber numberWithInt: 10]];
        [ages addObject: [NSNumber numberWithInt: 21]];

        price = 45;

        culler = [NSString stringWithString: @"bright green"];

        NSLog(@"waking up from nib, ages contains %i objects",[ages count]);
        NSLog(@"they are ...");
        for(int i = 0; i<[ages count]; i++)
        {
                NSLog(@"%i", [[ages objectAtIndex: i] integerValue]);
        }   

        NSLog(@"waking up from nib, the current price …
Run Code Online (Sandbox Code Playgroud)

xcode objective-c nsmutablearray

3
推荐指数
1
解决办法
78
查看次数

3
推荐指数
1
解决办法
976
查看次数

从NSMutableArray中删除对象

我有两个要素:

NSMutableArray* mruItems;
NSArray* mruSearchItems;
Run Code Online (Sandbox Code Playgroud)

我有一个基本上UITableView保持mruSearchItems,并且一旦用户滑动并删除特定行,我需要在其中找到该字符串的所有匹配mruItems并从那里删除它们.

我没有充分使用NSMutableArray,我的代码由于某些原因给了我错误:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
    //add code here for when you hit delete
    NSInteger i;
    i=0;
    for (id element in self.mruItems) {
        if ([(NSString *)element isEqualToString:[self.mruSearchItems objectAtIndex:indexPath.row]]) {

            [self.mruItems removeObjectAtIndex:i];
        }
        else
           {
            i++;
           }
    }
    [self.searchTableView reloadData];

}    
Run Code Online (Sandbox Code Playgroud)

}

错误:我现在看到一些字符串不在引号之间(UTF8中的字符串是)

Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <__NSArrayM: 0x1a10e0> was mutated while being enumerated.(
    "\U05de\U05e7\U05dc\U05d3\U05ea",
    "\U05de\U05d7\U05e9\U05d1\U05d5\U05df", …
Run Code Online (Sandbox Code Playgroud)

xcode objective-c nsmutablearray ios

3
推荐指数
1
解决办法
6516
查看次数

iOS - 将数组对象的副本复制到另一个数组对象中

我有一点问题,我需要帮助.

我想循环遍历一个多维数组,每次我找到一个密钥ex的值."name"等于ex."你好".我想将该数组对象复制到另一个数组中.

我怎么做?

iphone nsmutablearray nsarray ios ios5

3
推荐指数
1
解决办法
8231
查看次数

NSPredicate 101:将NSPredicate与NSMutableArray自定义对象一起使用

这是一个非常基本的问题,即使我认为理解NSPredicate的基础知识,我仍然有点难过为什么我在这里得到一个错误(searchText是一个指向NSString对象的指针,它被传递到方法).

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF.name contains[cd] %@", searchText];
_searchResults = [_personArray filteredArrayUsingPredicate:predicate];
Run Code Online (Sandbox Code Playgroud)

我有一个自定义对象的NSMutableArray(例如,Person对象),它有一个name属性.我想要做的就是在用户开始输入UISearchBar时使用NSPredicate来过滤潜在的匹配.IB组件很简单,看起来功能很好.但是,当我尝试搜索并开始过滤时,基本应用程序崩溃并出现以下错误:

'NSInvalidArgumentException', reason: '-[xPerson isEqualToString:]: unrecognized selector sent to instance 0x8043340'

我的理解是谓词将被传递给NSMutableArray中的每个对象,谓词中的SELF关键字引用相应的对象(我相信,在这种情况下甚至不需要),而.name是能够在自定义对象上使用合成属性.该错误似乎表明在自定义对象上调用了-isEqualToString:调用,而不是对象的属性.

任何关于我做错的建议都会受到极大的赞赏.

objective-c nsmutablearray nspredicate ios

3
推荐指数
1
解决办法
3796
查看次数

从NSMutableArray中删除对象时崩溃

我有一个NSMutableArray我初始化的viewDidLoad:

 self.titlesTagArreys = [@[@"Dollar", @"Euro", @"Pound",@"Dollar longString", @"Euro longStringlongString", @"Pound",@"Dollar", @"Euro", @"PoundlongStringlongString"]mutableCopy];
Run Code Online (Sandbox Code Playgroud)

在.h:

 @property(nonatomic, copy) NSMutableArray* titlesTagArreys;
Run Code Online (Sandbox Code Playgroud)

当我尝试删除一个项目时,应用程序崩溃:

-(void)removeButtonWasPressed:(NSString*)tagTitle{
    NSLog(@"tagTitle - %@",tagTitle);
    NSLog(@"self.titlesTagArreys - %@",self.titlesTagArreys);    
    [self.titlesTagArreys removeObject:tagTitle];
}
Run Code Online (Sandbox Code Playgroud)

这是日志:

2013-08-06 16:15:03.989 EpicTv[6378:907] tagTitle - Dollar
2013-08-06 16:15:03.991 EpicTv[6378:907] self.titlesTagArreys - (
    Dollar,
    Euro,
    Pound,
    "Dollar longString",
    "Euro longStringlongString",
    Pound,
    Dollar,
    Euro,
    PoundlongStringlongString
)
[__NSArrayI removeObject:]: unrecognized selector sent to instance 0x1c53bbd0
 *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayI removeObject:]: unrecognized selector sent to …
Run Code Online (Sandbox Code Playgroud)

objective-c nsmutablearray

3
推荐指数
2
解决办法
2320
查看次数

[__NSArrayM objectForKeyedSubscript:]:无法识别的选择器发送到实例 - 源代码和附件截图

在GitHub我有一个简单的iPhone应用程序,它从社交网络Mail.ru获取用户信息(通过使用OAuth):

应用截图

它确实获取并打印信息,但随后崩溃.

作为一个iOS编程新手,我对下面的输出感到困惑(也请看看PasteBin的完整输出):

2014-01-21 21:21:10.873 oauthMailru[8228:3307] -[__NSArrayM objectForKeyedSubscript:]: unrecognized selector sent to instance 0x8a97290
2014-01-21 21:21:10.875 oauthMailru[8228:3307] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayM objectForKeyedSubscript:]: unrecognized selector sent to instance 0x8a97290'
*** First throw call stack:
(
    0   CoreFoundation                      0x01aa65e4 __exceptionPreprocess + 180
    1   libobjc.A.dylib                     0x018298b6 objc_exception_throw + 44
    2   CoreFoundation                      0x01b43903 -[NSObject(NSObject) doesNotRecognizeSelector:] + 275
    3   CoreFoundation                      0x01a9690b ___forwarding___ + 1019
    4   CoreFoundation                      0x01a964ee _CF_forwarding_prep_0 + 14
    5   oauthMailru                         0x00003a62 __47-[ViewController fetchMailruWithToken:ForUser:]_block_invoke …
Run Code Online (Sandbox Code Playgroud)

objective-c nsmutablearray ios unrecognized-selector

3
推荐指数
1
解决办法
9949
查看次数

从NSString中删除重复的单词并另存为新的NSString

我有一些场景,我可能有一个包含几个单词的NSString,其中一些是重复的.我想要做的是采取一个看起来像这样的字符串:

One Two Three Three Three Two Two Two One One Two Three
Run Code Online (Sandbox Code Playgroud)

并使它看起来像:

One Two Three
Run Code Online (Sandbox Code Playgroud)

可能有时候原始NSString的确切长度也不同.到目前为止我所拥有的是:

NSString *hereitis = @"First Second Third Second Third First First First";
    NSArray *words = [hereitis componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
    NSCountedSet *countedSet = [NSCountedSet setWithArray:words];
    NSMutableArray *finalArray = [NSMutableArray arrayWithCapacity:[words count]];

for(id obj in countedSet) {
    if([countedSet countForObject:obj] == 1) {
        [finalArray addObject:obj];
    }
}
NSString *string = [finalArray componentsJoinedByString:@" "];
NSLog(@"String%@", string);
Run Code Online (Sandbox Code Playgroud)

但是,这只是在我的数组中返回String,而不是任何单词.

objective-c nsstring nsmutablearray nsarray ios

3
推荐指数
1
解决办法
734
查看次数

在IOS 11时,Xcode 9无法投类型"Swift._EmptyArrayStorage"到"的NSMutableArray"的值

看起来我们无法将varSwift中的空数组转换为Objc中的NSMutableArray.

var adultTravelerModels: [TravelerDataModel] = []
BookDataManger.sharedInstance().arraySelectedAdultPassenager = adultTravelerModels as! NSMutableArray
/* (lldb) po adultTravelerModels
0 elements */
Run Code Online (Sandbox Code Playgroud)

系统版本为iOS 11.0,Xcode 9.0.

我们怎么解决这个问题?

nsmutablearray ios swift

3
推荐指数
1
解决办法
3106
查看次数