将字符串添加到NSMutablearray的第0个索引?

时间:2013-05-12 09:58:21

标签: ios objective-c nsmutablearray

我有一个带有11个元素的NSMutableArray“array1”我想在第一个位置再插入一个字符串我该怎么办? 我尝试了下面的代码但这个抛出异常

  NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *categoryPath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"list.plist"];
    categoryList = [[NSDictionary alloc] initWithContentsOfFile:categoryPath];
    NSMutableArray *Name=[[NSMutableArray alloc]init];
Name=[[categoryList objectForKey:@"catlist"] valueForKey:@"category_name"];
    NSString *str=@"Rahul";
    [categoryName insertObject:str atIndex:0];

例外

 Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayI insertObject:atIndex:]: unrecognized selector sent to instance 0x8349e30'
*** First throw call stack:
(0x2465052 0x1738d0a 0x2466ced 0x23cbf00 0x23cbce2 0x6f690 0x6f402 0x96e64e 0x7123c 0x930a5 0x96e64e 0x96dc1c 0x99456d 0x97ed47 0x995441 0x99545d 0x9954f9 0x97f213 0xb24fbd 0xb24ccb 0x9812b7 0x9813df 0x97ed9b 0x995441 0x99545d 0x9954f9 0x8d5d65 0x8d5dac 0x8a6be6 0x8a78a6 0x8b6743 0x8b71f8 0x8aaaa9 0x3922fa9 0x24391c5 0x239e022 0x239c90a 0x239bdb4 0x239bccb 0x8a72a7 0x8a8a9b 0x2f2d 0x2e55 0x1)
terminate called throwing an exception(lldb) 

4 个答案:

答案 0 :(得分:2)

例外情况就是这样,

__ NSArrayI 是不可变数组的代码字 - 也就是说,你不能改变的“常规”NSArray。

名称数组肯定不是NSMutableArray。

您可能正在将 NSArray 分配给 NSMutable 数组您已将 NSMutableArray *名称初始化为NSArray



编辑1:

解决问题

改变你的代码,

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *categoryPath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"list.plist"];
categoryList = [[NSDictionary alloc] initWithContentsOfFile:categoryPath];
NSMutableArray *Name=[[NSMutableArray alloc] initWithArray:[[categoryList objectForKey:@"catlist"] valueForKey:@"category_name"]];
NSString *str=@"Rahul";
[categoryName insertObject:str atIndex:0];

答案 1 :(得分:2)

你的数组不是NSMutableArray,它是一个例外的NSArray。检查您创建或分配阵列的位置。

答案 2 :(得分:1)

尝试:

NSMutableArray *array1 = [NSMutableArray array];
[array1 insertObject:[NSString stringWithFormat:@"%@", assamElite] atIndex:0];

答案 3 :(得分:0)

您可以尝试在导致崩溃的行之前设置断点,然后键入调试器:

po (NSString*)NSStringFromClass([Name class]);

通过这种方式,您可以看到名称实际上是NSArray的一个实例。 即使您分配了NSMutableArray的实例,也会覆盖第二行中的指针:

NSMutableArray *Name=[[NSMutableArray alloc]init];
//this returns an NSArray
Name=[[categoryList objectForKey:@"catlist"] valueForKey:@"category_name"];