0

検索しようとしている配列を NSLOG() すると、これが得られます...

(
    {
    id = 101323790;
    "screen_name" = AmyBurnett34;
},
    {
    id = 25073877;
    "screen_name" = realDonaldTrump;
},
    {
    id = 159462573;
    "screen_name" = ecomagination;
},
    {
    id = 285234969;
    "screen_name" = "UCB_Properties";
},
    {
    id = 14315150;
    "screen_name" = MichaelHyatt;
}
)

これで問題ありませんが、ID を入力して、一致する screen_name を NSString として返すメソッドを用意する必要があります。配列が呼び出されると、どうすればこれを行うことができますか。

私が探しているのは NSPredicate だと思いますが、よくわかりません...

NSArray *twitterInfo;
4

2 に答える 2

3

はい、NSPredicate はあなたが望むものです。このようなもの:

NSString yourID; // assume this contains the id you want
NSPredicate *pred = [NSPredicate predicateWithFormat:@"id = %@", yourID];
NSString *screenName = [[[twitterInfo filteredArrayUsingPredicate:pred] lastObject] objectForKey:@"screen_name"];
于 2012-07-31T22:50:13.090 に答える
0

私はブロックで列挙を使用することに部分的です(述語よりも理解しやすい:-):

NSInteger desiredID = ...;
__block NSString *userName;

NSString *name = [twitterInfo enumerateObjectsUsingBlock:^(NSDictionary *dict, NSUInteger idx, BOOL *stop)
{
  NSInteger theID = [[dict objectForKey:@"id"] integerValue];
NSLog(@"Check ID %d against %d", theID, desiredID); // just to see its working
  if(theID == desiredID) {
    userName = [dict objectForKey:@"screen_name"];
    *stop = YES;
  }
} ];

この末尾の userName が nil の場合、id は見つかりませんでした。

于 2012-07-31T23:20:41.827 に答える