我有一个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"];
感谢您的帮助。
答案 0 :(得分:4)
试试这个。这将根据您的其他数组的内容创建一个新的NSMutableArray
。
arrayofCountry = [NSMutableArray arrayWithArray:[JSON valueForKeyPath:@"country_name"]];
答案 1 :(得分:2)
如果存储在密钥为country_name
的JSON文件中的值为NSArray
,则无法在不更改NSMutableArray
的情况下将其复制到arrayofCountry = [[JSON valueForKeyPath:@"country_name"] mutableCopy];
。试着这样做:
NSMutableArray
此外,在创建arrayOfCountry = [NSMutableArray array];
时,请按照此方式创建(而不是使用 alloc 然后 init ):
{{1}}
答案 2 :(得分:1)
尝试这样,
arrayofCountry=(NSMutableArray *)[JSON valueForKeyPath:@"country_name"];
as @ Ahmed Mohammed:建议尝试这样的方式
arrayofCountry=[[JSON valueForKeyPath:@"country_name"] mutableCopy];