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