0

我有一个 plist 文件,它从主包复制到 docs 目录中。如果该文件已经存在于文档中,它不会将其复制到它应该如何工作的地方。

我遇到的问题是当我在 appDelegate applicationDidFinishLaunching 或 rootViewControllers viewDidLoad 或 viewDidAppear 方法中初始化 plist 数组时。

现在,被复制到 docs 目录的 mainbundle 中的 plist 有一个项目,它是一个字符串

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);

结果如何为空?

4

3 回答 3

0

好吧,伙计们,我发现这是我初始化数组的地方。在 viewdidload 中,我提供了在 0.1 秒延迟后执行选择器,并且选择器指向一个方法,该方法包含 plist 的初始化以及我在记录数组内容时检查的条件。

于 2012-06-28T22:34:04.917 回答
0

假设它找到了文件,plist 应该是一个字典。您在 plist 中的数组应该有一个名称来识别它,所以请尝试以下操作:

NSDictionary *dict = [[NSDictionary alloc]initWithContentsOfFile:plistPath2];
NSArray *currencyArray = [dict objectForKey:@"CurrencyArrayKey"];

其中“CurrencyArrayKey”是您的 plist 中数组的键。

于 2012-06-28T22:22:15.703 回答
0

通过将 plist 内容作为文本文件打开来检查它。

通过可视化编辑器创建的 Plist 由dict包含其余元素的 a 组成(我不清楚您是否包含字符串或带有字符串的数组)。

如果您看到一个字典,那么您的 plist 将正确反序列化为字典,而不是数组。

您也可以尝试使用:

 [NSDictionary dictionaryWithContentsOfFile:path];
于 2012-06-28T22:23:11.617 回答