我有一个plist文件,从主包中复制到docs目录中。如果该文件已存在于文档中,则它不会复制它应该如何工作。
我遇到的问题是我在appDelegate applicationDidFinishLaunching或rootViewControllers viewDidLoad或viewDidAppear方法中初始化plist数组。
现在mainbundle中的plist被复制到docs dir有一个项目是一个字符串
plist源确实包含一个名为GBP的字符串,该字符串包含在数组节点中,这也是正确的。
我像这样初始化plist NSMutableArray
NSString *rootPath2 = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *plistPath2 = [rootPath2 stringByAppendingPathComponent:@"currency.plist"];
theCurrency = [[NSMutableArray alloc] initWithContentsOfFile:plistPath2];
在viewDidLoad或viewWillAppear中,我用以下方法检查数组:
NSLog(@"Array contains %@", theCurrency);
结果如何为空?
答案 0 :(得分:0)
假设它找到了文件,那么plist应该是一本字典。 plist中的数组应该有一个名称来识别它,所以尝试类似:
NSDictionary *dict = [[NSDictionary alloc]initWithContentsOfFile:plistPath2];
NSArray *currencyArray = [dict objectForKey:@"CurrencyArrayKey"];
其中“CurrencyArrayKey”是您的plist中数组的键。
答案 1 :(得分:0)
通过将plist内容打开为文本文件来检查它。
通过可视化编辑器创建的Plist是由包含其余元素的dict
创建的(我不清楚你是否包含字符串或带字符串的数组)。
如果你看到一个字典,那么你的plist会正确地反序列化为字典,而不是数组。
您也可以尝试使用:
[NSDictionary dictionaryWithContentsOfFile:path];
答案 2 :(得分:0)
好的家伙我发现它是我初始化阵列的地方。在viewdidload中,我在0.1秒延迟后提供了执行选择器,并且选择器指向一个方法,该方法包含plist的初始化以及我在记录数组内容时检查的条件。