如何计算plist中的项目

时间:2012-08-13 20:54:36

标签: objective-c ios cocoa-touch

我有一个问题,我如何计算我的plist文件中的项目。我试过了:

NSString *bundlePathofPlist = [[NSBundle mainBundle]pathForResource:@"Mything" ofType:@"plist"];

    NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:bundlePathofPlist];

    NSArray *dataFromPlist = [dict valueForKey:@"some"];

    for(int i =0;i<[dataFromPlist count];i++)
    {
        //NSLog(@"%@",[dataFromPlist objectAtIndex:i]);
        [self setTableData:[dataFromPlist count]];

    }

    NSLog(@"%@", tableData);

但是在这一行上会出现错误:

    [self setTableData:[dataFromPlist count]];

Implicit conversion of 'NSUInteger' (aka 'unsigned int') to 'NSArray *' is disallowed with ARC

并警告:

Incompatible integer to pointer conversion sending 'NSUInteger' (aka 'unsigned int') to parameter of type 'NSArray *'; 

2 个答案:

答案 0 :(得分:2)

您的setTableData看起来像NSArray个实例。您需要在循环中预先准备一个数组,然后将其设置一次,如下所示:

NSMutableArray *data = [NSMutableArray array];
for(int i =0;i<[dataFromPlist count];i++)
{
    //NSLog(@"%@",[dataFromPlist objectAtIndex:i]);
    [data addObject:[NSNumber numberWithInt:[[dataFromPlist objectAtIndex:i] count]]];
}
[self setTableData:data];

这假定您的setTableData方法需要包含NSNumber的{​​{1}}个实例数组。

答案 1 :(得分:0)

问题是你在for循环中使用[dataFromPlist count],这没有任何意义。你可能意味着[dataFromPlist objectAtIndex:i]

或者,更具惯用性,

for (NSArray *elt in dataFromPlist) {
    [self setTableData:elt];
}

虽然我不得不想知道为什么你要用不同的元素一遍又一遍地调用-setTableData。