1

我有一个 NSMutableArray,它的初始化如下:

@interface Countries ()
{
    NSMutableArray *arrayofCountry;
}
@end


- (void)viewDidLoad
{
       //...
       arrayofCountry=[[NSMutableArray alloc]init];
       //...
}

然后我想对removeObjectAtIndex那个 NSMutableArray 应用一个:

[arrayofCountry removeObjectAtIndex:sourceRow];

问题是它与该日志崩溃:

-[__NSArrayI removeObjectAtIndex:]: unrecognized selector sent to instance

我通过以下方式验证了它:

NSLog( NSStringFromClass( [arrayofCountry class] ));

它正在返回__NSArrayI。问题是它是如何转换为 NSArray 的?我只是填充它:

arrayofCountry=[JSON valueForKeyPath:@"country_name"];

谢谢您的帮助。

4

3 回答 3

4

尝试这个。这将根据您的其他数组的内容创建一个新NSMutableArray的。

arrayofCountry = [NSMutableArray arrayWithArray:[JSON valueForKeyPath:@"country_name"]];
于 2013-07-18T14:32:29.927 回答
2

如果存储在带有键的 JSON 文件中的值country_name是 anNSArray那么它不能在NSMutableArray不更改的情况下复制到 an 中。尝试这样做:

arrayofCountry = [[JSON valueForKeyPath:@"country_name"] mutableCopy];

此外,在创建NSMutableArray时像这样创建它(而不是使用alloc然后init):

arrayOfCountry = [NSMutableArray array];
于 2013-07-18T14:33:32.270 回答
1

试试这样

arrayofCountry=(NSMutableArray *)[JSON valueForKeyPath:@"country_name"];

as@Ahmed Mohammed:建议这样试试

arrayofCountry=[[JSON valueForKeyPath:@"country_name"] mutableCopy];
于 2013-07-18T14:27:52.060 回答