代码之家  ›  专栏  ›  技术社区  ›  Vjardel

NSArray中的NSPredicte,包含带“/”的数字

  •  0
  • Vjardel  · 技术社区  · 10 年前

    我想过滤 NSMutableArray Facebook用户的生日。 我能用吗 NSPredicate ? 我的NSLog“result”是:

    "birthday": "05/24/1993", 
      "id": "xxxxxxxxxxx""
    

    我只希望“1993年5月24日”获得生日日期,并将其保存在 NSArray :生日。

    这是我的代码:

    - (void)viewDidLoad
    {
        [super viewDidLoad];
        FBRequest *friendRequest = [FBRequest requestForGraphPath:@"/me?fields=birthday"];
        [ friendRequest startWithCompletionHandler:^(FBRequestConnection *connection,id result, NSError *error) {
            [[NSUserDefaults standardUserDefaults]setObject:result forKey:@"birthdayDate"];
            self.birthdayArray=[[NSUserDefaults standardUserDefaults]objectForKey:@"birthdayDate"];
    
            NSPredicate *aPredicate = [NSPredicate predicateWithFormat:@"SELF contains[c] '/'"];
            self.birthday = [self.birthdayArray filteredArrayUsingPredicate:aPredicate];
    
            NSLog(@"BIRTHDAY : %@", self.birthday);
    
        }
    

    我的NSArray生日NSLog为错误:

    -[__NSCFDictionary filteredArrayUsingPredicate:]: unrecognized selector sent to instance 0x10f80a570
    
    1 回复  |  直到 10 年前
        1
  •  0
  •   giorashc    10 年前

    您的结果是 NSDictionary 实例而不是 NSArray 例子这就是为什么你会收到错误消息 字典 不支持 filteredArrayUsingPredicate 消息

    你可以得到 不可变数组 包含NSDictionary中的所有密钥:

    NSArray *keys = [result allKeys];
    

    按以下步骤过滤阵列:

    NSArray *filteredKeys = [keys filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"SELF beginswith[c] 'b'"]];
    

    然后使用 filteredKeys 从字典中提取所需值:

    for (NSString *key in filteredKeys) { // Assuming that the dictionary keys are string
        id value = [result objectForKey:key];
        NSLog(@"Current value for key %@ = %@", key, value);
    }