奇怪的NSDictionary崩溃

时间:2010-09-14 18:24:36

标签: iphone objective-c nsdictionary

我有以下代码:

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类型的对象,但作为泛型类型,我无法得到我做错的事。

1 个答案:

答案 0 :(得分:1)

您尚未包含初始化myarray1myarray2的代码,但显然其中一个或两个都是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...
}