0

sqlite データ ソースから読み取ったレコードが取り込まれた配列 (tempList) があります。「地域」に基づいてこれらのレコードを並べ替えたいと思います。そこで、次の NSMUtableArray を設定しました: _Asia、_Africa、_CentralAmerica、_southAmerica。

メソッドはエラーなしでコンパイルされます。「if」ステートメントが true を返す場合、「addObject」を実行しますが、要素は配列に追加されません。

- (void) sortIntoRegions: tempList
{
    for (beans *arrayElement in tempList) {
        NSLog(@"region: %@", arrayElement.region);
        if ([arrayElement.region isEqualToString:@"Africa"]) {
            [_africa addObject:arrayElement.name];
        } else if ([arrayElement.region isEqualToString: @"Asia & South Pacific"]) {
            [_asia addObject:arrayElement.name];           
        }
        else if ([arrayElement.region isEqualToString: @"Central America"]) {
            [_centralAmerica addObject:arrayElement];
        } else if ([arrayElement.region isEqualToString: @"South America"]) {
            [_southAmerica addObject:arrayElement];
        }
    }
}
4

1 に答える 1

0

私は四肢に出て、あなたが、、、および であると宣言したと推測しますが、それらを 初期化していません。つまり、次のようなコードを書いていません。_africa_asia_centralAmerica_southAmericaNSMutableArray *

_africa = [[NSMutableArray alloc] init];
_asia = [[NSMutableArray alloc] init];
_centralAmerica = [[NSMutableArray alloc] init];
_southAmerica = [[NSMutableArray alloc] init];

オブジェクトが作成されると、インスタンス変数は nil に設定されます。メッセージ ( などaddObject:) を nil に送信しても効果はありません (また、警告やエラー メッセージは出力されません)。

于 2012-10-11T03:07:04.553 に答える