这就是plist看起来像原始的:
{
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的总项目,并将它们显示为:'4 Accounts'。
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *myPlistPath = [documentsDirectory
stringByAppendingPathComponent:@"Accounts.plist"];
NSDictionary *plistDict = [[NSDictionary alloc] initWithContentsOfFile:myPlistPath];
NSArray *array = [[plistDict objectForKey:0]
sortedArrayUsingSelector:@selector(compare:)];
return([NSString stringWithFormat:@"%d Accounts", [array count]]);
但是,结果返回0.我希望它返回字典中的ammount项。
答案 0 :(得分:1)
您的return语句正在转发字典第一个元素中的项目数,而不是字典本身的项目数。相反,我认为你想要的是:
return [NSString stringWithFormat:@"%d Accounts", [plistDict count]];
答案 1 :(得分:0)
[plistDict count]
怎么样?由于您传递0
作为字典的关键字,因此您无法使用nil
作为键或值,因此您将无法获得任何内容。
答案 2 :(得分:0)
这似乎是一个旧的OpenStep属性列表,支持作为只读格式。
您的代码看起来没问题,只有NSDictionary
只将对象作为键,因此“[plistDict objectForKey:0]
”不会按预期执行。如果您知道属性列表的顶级是一个数组,那么将其分配给NSArray
,而不是NSDictionary
。如果它实际上是字典,则使用字符串值作为键,而不是0。