gpt4 book ai didi

cocoa - 将数据从 Plist 加载到数组时遇到问题

转载 作者:行者123 更新时间:2023-12-03 17:59:27 25 4
gpt4 key购买 nike

我有一个奇怪的问题,可能有一个简单的解决方案,但我只是找不到/弄清楚。任何想法都将不胜感激。

我有一个属性列表,其中包含一个作为根对象的数组。该数组包含几个字典。

下面的代码显示了我如何尝试将 plist 数据加载到我的数组中 -

-(void)awakeFromNib{

NSString *plistPath = @"/Users/administrator/Desktop/WipeOut Winner!/Data.plist";
NSLog(@"Plist path is %@",plistPath);


if (![[NSFileManager defaultManager] fileExistsAtPath:plistPath]) {
NSLog(@"File wasn't found");
}


tableDataArray = [[NSMutableArray alloc]initWithContentsOfFile:plistPath];

NSLog(@"array count is %lu",[tableDataArray count]);

}

下面是 plist 文件 -

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>root</key>
<array>
<dict>
<key>winner</key>
<string>Scott</string>
<key>personChosen</key>
<string>Female</string>
<key>winType</key>
<string>2 and &apos;Won&apos; -3 pts.</string>
<key>Points</key>
<string>3</string>
</dict>
<dict>
<key>winner</key>
<string>Emily</string>
<key>personChosen</key>
<string>Male</string>
<key>winType</key>
<string>All The Way! -5 pts.</string>
<key>points</key>
<string>5</string>
</dict>
</array>
</dict>
</plist>

正在按应有的方式找到 plist 文件。我已经确认 plist 中的根对象是一个(字典)数组。不过,这次调用后我的数组计数总是为零。

在尝试解决这个问题的过程中,我将 plist 中的数据更改为单个 NSDictionary,而不是包含字典的数组。然后我将 plist 加载到 NSDictionary 中,将该字典加载到数组中,并且数组计数按预期为 1,因此我确信就 plist 的查找、加载等而言,事情已正确连接。在另一个测试中,而不是尝试使用 plist 数据加载数组,如下所示

tableDataArray = [[NSMutableArray alloc]initWithContentsOfFile:plistPath];

我绕过了 plist 的所有内容,只是像这样加载了数组 -

tableDataArray =[[NSMutableArray alloc]initWithCapacity:1];

NSDictionary *dict = [[NSDictionary alloc]initWithObjectsAndKeys:@"Emily",@"name",@"12",@"age", nil];

[tableDataArray addObject:dict];

这也将数组计数更改为预期的 1。所以我想我的问题一定与此有关

tableDataArray = [[NSMutableArray alloc]initWithContentsOfFile:plistPath];

但我似乎不知道在哪里。

最佳答案

plist 的根不是数组。它是一个具有指向字典数组的单个键“根”的字典。您的 plist 应该如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<dict>
<key>winner</key>
<string>Scott</string>
<key>personChosen</key>
<string>Female</string>
<key>winType</key>
<string>2 and &apos;Won&apos; -3 pts.</string>
<key>Points</key>
<string>3</string>
</dict>
<dict>
<key>winner</key>
<string>Emily</string>
<key>personChosen</key>
<string>Male</string>
<key>winType</key>
<string>All The Way! -5 pts.</string>
<key>points</key>
<string>5</string>
</dict>
</array>
</plist>

关于cocoa - 将数据从 Plist 加载到数组时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8750523/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com