0

別の配列のフィルター処理された結果を配列に入力しようとすると、エラーが発生して苦労しています。

.h ファイルで allArray という名前のグローバル配列を定義しました。この配列には約 100 個のオブジェクトが含まれています。次に、ユーザーが特定のオブジェクトを検索できるようにしたいので、述語を使用して開発しようとしました。

  -(IBAction)searchChanged:(id)sender {
    //The searchfield's value has been changed.

    NSString *searchString = searchField.text;
    NSPredicate *searchPredicate = [NSPredicate predicateWithFormat:@"self CONTAINS[c] %@", searchString];
    NSMutableArray *tempSearchArray = [allArray filterUsingPredicate:searchPredicate];
    [filteredArray removeAllObjects];
    [filteredArray addObjectsFromArray:tempSearchArray];
}

tempSearchArray を作成するとエラーが発生します。

互換性のないタイプ「void」の式で「NSMutableArray *__strong」を初期化しています

4

3 に答える 3

0

ドキュメントが教えてくれるように、filterUsingPredicate には void の戻り値があります。ここを参照してください:

NSMutableArray クラス リファレンス

つまり、その戻り値を別の配列に割り当てることはできません。次の行に沿って、元の配列でこのメソッドを使用する必要があります

[allArray filterUsingPredicate:somePredicate];

arrArray は、述語に一致しない要素を取り除きます。

必要に応じて、これらの結果を続行します。

楽しんで

于 2013-02-18T15:47:23.680 に答える
0

filterUsingPredicate は、配列ではなく void を返します。代わりにfilteredArrayUsingPredicateの使用を検討することをお勧めします

于 2013-02-18T15:56:44.000 に答える