【发布时间】:2012-08-23 14:56:29
【问题描述】:
我在这里遇到了一个奇怪的错误。 我有一个名为 __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:
等等。
我不知道如何到达这个数组中的一个对象。似乎 objectAtIndex 找不到任何索引,甚至索引:0,即使里面有数据。有人知道如何获取它吗?
我正在使用来自 Apple 的 PhotoScroller 模板,使用 CATiledLayer。我认为整个事情有点时髦,但每个人都说我们应该将它用于大图像。对于巨大的图像,任何人都有比 CATiledLayer 更好的解释或想法吗? (8556*7121px)。
为什么我会从 NSArray 得到 Dictionary-error?
在执行NSDictionary *dict = [__ImageData objectAtIndex:0] 时,我也遇到了同样的异常。
斯蒂安。
【问题讨论】:
-
当心,
+[NSPropertyListSerialization propertyListFromData:mutabilityOption:format:errorDescription:]已弃用。另外,请仔细检查您的可变大小写? -
@Hyperbole 啊,好的。我只是对苹果的Photoscroller代码进行了逆向工程,几乎没有收到警告。我现在没有警告,代码上也没有弃用的行,所以我认为一切都很好。我注意到大写,这不在代码中,这是我将代码放在这里的错误。
-
@Hyperbole 嗯,你怎么知道它已被弃用?我没有任何关于 NSPropertyListSerialization 在任何地方被弃用的线索..
-
NSPropertyListSerialization没有被弃用,它是propertyListFromData:mutabilityOption:format:errorDescription被弃用的方法。 -
啊,谢谢。我改用 propertyListWithData。
标签: objective-c ios cocoa-touch nsarray catiledlayer