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 に答える