我有以下代码:
NSDictionary *dict = [[NSDictionary alloc]
initWithObjectsAndKeys:myarray1, @"array1", myarray2, @"array2" nil];
NSArray *shorts =[[dict allKeys] sortedArrayUsingSelector:@selector(compare:)];
for (NSString *dir in shorts) {
NSArray *tempArr = [dict objectForKey:dir];
for (NSString *file in tempArr ) {
NSLog(@"%@", file);
}
}
myarray1和myarray2是NSArrays。
当我执行代码时,应用程序崩溃:
-[NSCFString countByEnumeratingWithState:objects:count:]: unrecognized selector sent to instance 0x1d134
这显然是tempArr,它不被认为是NSArray。我知道[dicFiles objectForKey:dir]
返回一个id
类型的对象,但作为泛型类型,我无法得到我做错的事。
答案 0 :(得分:1)
您尚未包含初始化myarray1
和myarray2
的代码,但显然其中一个或两个都是NSString
而非NSArray
的实例。您可以按如下方式从数组中检索其中一个对象后检查:
if (![tempArr isKindOfClass:[NSArray class]])
{
NSLog(@"Unable to process temp array because it's an instance of %@", [tempArr class]);
}
else
{
// for loop code goes here...
}