0

我在这里遇到了一个奇怪的错误。我有一个名为 __ImageData 的数组:

static NSArray *__ImageData = nil;
NSString *path = [[NSBundle mainBundle] pathForResource:@"ImageData" ofType:@"plist"];
NSData *plistData = [NSData dataWithContentsOfFile:path];
NSString *error; NSPropertyListFormat format;
_ImageData = [NSPropertyListSerialization propertyListFromData:plistData
                                              mutabilityOption:NSPropertyListImmutable
                                                        format:&format
                                              errorDescription:&error];

当我 NSLog 出数组的内容时,我得到这个输出:

2012-08-23 16:36:35.573 CAT[28814:c07] {
    "Item 0" =     {
        height = 7121;
        name = Map1;
        width = 8556;
    };
    "Item 1" =     {
        height = 7121;
        name = Map2;
        width = 8556;
    };
    "Item 2" =     {
        height = 7121;
        name = Map3;
        width = 8556;
    };
}

但是当我 NSLog out 时NSLog(@"%@", [__ImageData objectAtIndex:0]);,我得到了这个异常:

2012-08-23 16:36:35.573 CAT[28814:c07] -[__NSCFDictionary objectAtIndex:]: 
unrecognized selector sent to instance 0x719d0f0
2012-08-23 16:36:35.574 CAT[28814:c07] *** Terminating app due to uncaught exception 
'NSInvalidArgumentException', reason: '-[__NSCFDictionary objectAtIndex:]: 
unrecognized selector sent to instance 0x719d0f0'
*** First throw call stack:

ETC..

我不知道如何到达这个数组中的一个对象.. 似乎 objectAtIndex 找不到任何索引,甚至没有索引:0,即使里面有数据.. 有人知道如何获取它吗?我正在使用 Apple 的 PhotoScroller 模板,使用CATiledLayer. 我认为整个事情有点时髦,但每个人都说我们应该将它用于大图像。对于巨大的图像,任何人都有比 CATiledLayer 更好的解释或想法吗?(8556*7121 像素)。

为什么我会从 NSArray 得到 Dictionary-error?做的时候NSDictionary *dict = [__ImageData objectAtIndex:0],我也得到了同样的例外。

斯蒂安。

4

2 回答 2

2

_ImageData不是数组,而是字典。要显示字典的第一个元素,您可以执行以下操作:

NSLog(@"%@", [_ImageData objectForKey:@"Item 0"]);
于 2012-08-23T15:21:47.427 回答
-1

我使用 JSON 数组遇到了同样的问题。我的解决方法是将其转换为 NSDictionary,如下所示:

[(NSDictionary *)json objectForKey:@"detail"];

或者你可以这样做:

NSDictionary *dict = (NSDictionary *)array;
于 2015-03-30T17:12:58.813 回答