不确定为什么我的.plist在被视为源代码时看起来像这样,而不像XML文件。
{
authorLastName = Doe;
authorFirstName = Jane;
imageFilePath = "NoImage.png";
title = "Account Test 1";
year = 2009;
},
{
authorLastName = Doe;
authorFirstName = John;
imageFilePath = "NoImage.png";
title = "Account Test 2";
year = 2009;
}
当被视为源代码时,.plist是否应该看起来像这样?
第二,任何人都可以举例说明如何重新计算物品的数量,比如每个字典中的姓氏吗?我已经研究了这个太多小时了,我把我的头发拉出来因为我不能继续前进,直到我得到这个正确!我尝试的每一种方法都返回0.我在iPhone编程方面真的很新,所以我很感激我能得到的任何帮助!也许是阅读plist的完整例子?
答案 0 :(得分:1)
.plist文件可以采用两种形式,XML或Text。你拥有的那个是文本形式,并且更容易在概念上理解,而XML格式是......我确信它有一些优势(这是你创建一个plist时的默认设置。不确定为什么你的不是'吨)。
我不确定你的计数问题是什么。您是否要求查找有多少项目(2)或这些项目中有多少项具有姓氏属性集(本例中为2)或有多少项目总数(10)?
在任何情况下,你都会这样开始
NSArray *arr = [NSArray arrayWithContentsOfFile:pathToFile];
//Make sure arr is not nil at this point. If it is, there's either a formatting issue with the file, or the file couldn't be found based on the path you gave
然后,如果您正在尝试第一种情况:
int count = arr.count;
或第二种情况:
int count = 0;
for (NSDictionary *dict in arr) {
NSString *lastName = [dict objectForKey:@"authorLastName"];
if (lastName) {
++count;
}
}
或第三种情况:
int count = 0;
for (NSDictionary *dict in arr) {
count += dict.count;
}
答案 1 :(得分:0)
我终于得到了plist计数!
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *myPlistPath = [documentsDirectory
stringByAppendingPathComponent:@"Accounts.plist"];
NSArray *arr = [NSArray arrayWithContentsOfFile:myPlistPath];
int count = 0;
for (NSDictionary *dict in arr) {
NSString *lastName = [dict objectForKey:@"authorLastName"];
if (lastName) {
++count;
}
}
return([NSString stringWithFormat:@"%d Accounts", count]);