0

Facebook の API からの応答をフィルタリングしようとしています。JSON は次のようになります。

{ 
 "Data": [
  {  
    "first_name" : "Joe",
    "last_name" : "bloggs",
    "uuid" : "123"
  },
  {  
    "first_name" : "johnny",
    "last_name" : "appleseed",
    "uuid" : "321"
  }
 ]
}

これを NSDictionary にロードし、次のようにアクセスします[[friendDictionary objectForKey:@"data"] allObjects]

私は今、誰かがテキストフィールドに名前を入力したときに基づいfirst_nameてフィルタリングしようとしています。last_nameこれが私が持っているものですが、ひどく失敗しています:

  NSPredicate *filter = [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"ANY.first_name beginswith[c] %@ OR ANY.last_name beginswith[c] %@", friendField.text, friendField.text]];
  NSLog(@"%@", [[[friendDictionary objectForKey:@"data"] allObjects] filteredArrayUsingPredicate:filter]);

どんな助けでも大歓迎です、ありがとうみんな

4

1 に答える 1

5

あなたは複雑に考えすぎています。

  • stringWithFormatここでpredicateWithFormatは意味がありません。
  • Core Data オブジェクトの対多関係で使用される述語の「ANY」集計は必要ありません。
  • [friendDictionary objectForKey:@"Data"]は配列を返しますが、allObjectsここでは間違っています。
  • キーは「データ」ではなく「データ」です。

それは与える

NSPredicate *filter = [NSPredicate predicateWithFormat:@"first_name beginswith[c] %@ OR last_name beginswith[c] %@",
    friendField.text, friendField.text];
NSArray *filteredArray = [[friendDictionary objectForKey:@"Data"] filteredArrayUsingPredicate:filter];
于 2012-08-19T19:48:06.640 に答える