我有一个方法:
#define ROOT_ASSETS_PATH @"/assets/"
...
-(NSMutableDictionary*) getContentsOfPlist{
NSString *pageContentPlistPath = [[[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent: ROOT_ASSETS_PATH] stringByAppendingPathComponent:@"content.plist"];
NSMutableDictionary *mDictionary = [NSMutableDictionary dictionaryWithContentsOfFile:pageContentPlistPath];
return mDicitonary;
}
在模拟器上。这会返回一个字典。在iPad上,它返回零。确保扩展案例与调用中的案例相匹配。
有什么想法吗?
答案 0 :(得分:2)
这个问题毕竟是个案。文件名的大小写与我放入参数的情况不符。 OSX并不关心,但iPad确实如此。
答案 1 :(得分:0)
尝试删除#define中的斜杠。 stringByAppendingPathComponent将为您添加斜杠。不知道为什么这会在模拟器中起作用。
答案 2 :(得分:0)
最好使用:
[NSPropertyListSerialization propertyListWithData:options:format:error:]
而不是直接NSDictionary初始化。如果某些事情失败了,它应该为你返回一个很好的错误。
答案 3 :(得分:0)
+ (id)dictionaryWithContentsOfFile:(NSString *)path
<强>参数强>
路径
完整或相对路径名。路径标识的文件必须包含 属性列表的字符串表示形式,其根对象是a 字典。
返回值
包含路径字典的新字典,如果存在,则为nil 是文件错误或文件内容无效 字典的表示。
因此,您必须设置文件的完整路径(或适当的相对路径)
另请注意,应用程序包在Simulator上是可读写的,但在设备上是只读的。