1

この質問はされていると思いますが、何を検索すればよいかわかりません。

次のフィールドを持つ Message オブジェクトの配列があります{selected[BOOL], messageText[STR]}。この配列をフィルタリングして、 のオブジェクトのみを取得したいと考えていますselected=TRUE。ここまでは順調ですね。

NSArray *messagesFiltered = [self.fetchedResultsController.fetchedObjects filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"selected == TRUE"]];

ただし、返された配列にオブジェクト自体は必要ありませんmessageText。文字列の配列が必要です。オブジェクト全体ではなく文字列predicateのみを返すように変更するには?messageText

4

1 に答える 1

11

それは実際には述語の仕事ではありません。述語は、それらを適用する配列を変更するためではなく、フィルタリングするためだけのものです。

ただし、ちょっとしたトリックがあります。このメソッド-valueForKey:は、必要な種類の変換を配列に適用します。messageText必要なキーで呼び出すだけです:

NSArray *messagesFiltered = [self.fetchedResultsController.fetchedObjects filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"selected == TRUE"]];
NSArray *realMessages = [messagesFiltered valueForKey:@"messageText"];

配列で-valueForKey:は、指定されたキーの値を各要素に要求し、要素が返すすべての要素の配列を返します。nil(渡したキーに対して返される要素[NSNull null]は、結果の配列のように表示されます。)

于 2013-01-14T04:46:31.203 に答える