从plist返回项目计数

时间:2009-09-11 00:25:07

标签: iphone

不确定为什么我的.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的完整例子?

2 个答案:

答案 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]);