0

次のような他のオブジェクトの階層からオブジェクトの配列を作成しようとしています:

コード 1:

childController.names = [[NSMutableArray alloc] init];

for (Person *p in list.persons) {
    [childController.names addObject:p.name];
}

コード 2:

NSMutableArray *testArray = [list.persons valueForKey:@"name"];

最初のコード スニペットは完全に機能し、人の名前の配列を返します。対照的に、2 番目は正しい数の人の名前を含む配列を返しますが、XCode でコードをデバッグすると、「範囲外」と表示されます。それらのいずれかにアクセスしようとすると、アプリは次のように終了します。

キャッチされていない例外 'NSInvalidArgumentException' が原因でアプリを終了しています。理由: '*** -[NSCFSet objectAtIndex:]: 認識されないセレクターがインスタンス 0x72e0620 に送信されました'

リスト、人物は、それが重要な場合、コアデータ管理オブジェクトです..何が間違っているのですか???

4

1 に答える 1

1

の種類を確認する必要がありpersonsます。のようでNSSetvalueForKey:onNSSetは を返しますNSSet。このコード スニペットは期待どおりに動作するはずです。

NSSet* testSet = [list.persons valueForKey:@"name"];
于 2009-09-12T22:07:42.690 に答える