1

我有一个问题,我如何计算我的 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 *'; 
4

2 回答 2

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];

这假设您的方法需要一个包含 s 的实例setTableData数组。NSNumberint

于 2012-08-13T20:58:50.617 回答
0

问题是您在[dataFromPlist count]for 循环中使用,这是没有意义的。你可能的意思是[dataFromPlist objectAtIndex:i]

或者,更惯用的说法是,

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

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

于 2012-08-13T20:56:33.800 回答