2

述語の使用方法がわかりません。プロパティ「type」で配列からオブジェクトをフィルタリングするための非常に長いコードがあり、突然、私の生活を改善できるメソッド「filteredArrayUsingPredicate」を見つけました。述語を書こうとしていますが、常にエラーが発生します。誰かがそれを正しく書く方法を教えてもらえますか?

私には方法があります- (void) filterData: (NSString *)filteredWord

オブジェクトを含む配列(イベント)もあります:NSArray*eventsArray。filterizedArrayUsingPredicateを使用して、プロパティ(タイプ)がfilterWordと等しいオブジェクト(イベント)を持つ新しい配列を取得したいと思います。イベントはCoreDataManagedサブクラスであることに注意してください。

述語でこれを行うことさえ可能ですか?

私の試みの1つ:

NSString *propertyName = @"type";
NSArray *eventsArray = [[[[self currentPerson] events] objectEnumerator]allObjects];
NSPredicate *predicte = [NSPredicate predicateWithFormat:@"%k like '%@'",propertyName,filteredWord];
[eventsArray filteredArrayUsingPredicate:predicte];
4

1 に答える 1

2

これを試して:

NSString *propertyName = @"type";
NSArray *eventsArray = [[[self currentPerson] events] allObjects];
NSPredicate *predicte = [NSPredicate predicateWithFormat:
                         @"%k like %@",propertyName, filteredWord];
NSArray *filteredArray = [eventsArray filteredArrayUsingPredicate:predicte];

フィルタリングされた結果を無視します。はの新しいインスタンスをfilteredArrayUsingPredicate: 返します。オブジェクトは不変であるため、元の配列を適切にフィルター処理しません。を作成してから 、配列をその場でフィルタリングする ために使用するか、返された配列を使用して何かを行う必要があります (ログに記録、保存など...)NSArrayNSArrayNSMutableArrayfilterUsingPredicate:filteredArrayUsingPredicate:

プロパティを一重引用符で囲まないでください。(手がかりをありがとう@MartinR)

于 2012-12-16T13:40:47.153 に答える