0

这是 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。我希望它返回字典中的项目数量。

4

3 回答 3

1

您的 return 语句是在传递字典第一个元素中的项目数,而不是字典本身的项目数。相反,我认为您想要的是:

return [NSString stringWithFormat:@"%d Accounts", [plistDict count]];
于 2009-09-10T16:36:16.073 回答
0

怎么样[plistDict count]?由于您是0作为字典的键传入的,因此您将无法获得任何返回,因为您不能将nil其用作键或值。

于 2009-09-10T16:37:04.387 回答
0

这似乎是一个旧的 OpenStep 属性列表,它被支持为只读格式。

您的代码看起来不错,除了NSDictionary只将对象作为键,因此“ [plistDict objectForKey:0]”不会按照您的预期进行。如果您知道属性列表的顶层是一个数组,则将其分配给一个NSArray,而不是一个NSDictionary。如果它实际上是字典,请使用字符串值作为键,而不是 0。

于 2010-12-27T02:20:33.620 回答