【问题标题】:Apply NSPredicate to Array which is inside an a dictionary IOS将 NSPredicate 应用于字典 IOS 中的数组
【发布时间】:2023-03-31 01:45:01
【问题描述】:
@interface Contact : NSObject

@property (assign, nonatomic) NSInteger *cid;
@property (strong, nonatomic) NSString * name;
@property (strong, nonatomic) NSMutableArray *arrPhone;

@end

我已经为上面具有 arrPhone 数组的字典创建了“Contact”NSObject。

现在我有一个包含联系人对象列表的数组。现在我需要那些电话数组包含以@“11”(我的搜索字符串)开头的号码的联系人对象

我尝试了以下方法:

NSPredicate *p1 =[NSPredicate predicateWithFormat:@"arrPhone contains[cd] %@)",searchText];

但它不起作用。请帮忙。

【问题讨论】:

  • 我已经为它创建了模型类并存储在一个数组中。然后我在电话数组上应用谓词,如 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"arrPhone contains[c] %@", @"11"];
  • 然后编辑问题并显示您的代码

标签: ios iphone ios9 nspredicate


【解决方案1】:

由于arrPhone 本身是一个数组,您需要测试它的任何成员是否与您的搜索条件匹配,而不是是否匹配。所以修改你的谓词以使用ANY

NSPredicate *p1 =[NSPredicate predicateWithFormat:@"ANY arrPhone contains[cd] %@)",searchText];

【讨论】:

  • 这行得通!有人应该将此标记为答案! kthnxbi
【解决方案2】:

试试这个

[collection[@"phone"] filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"SELF beginswith[c] '11'"]];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-18
    相关资源
    最近更新 更多