ios - 创建从字典数组中过滤的数组,并将数组作为输入

标签 ios objective-c nsarray nsdictionary

我有一个字典和一个数组,如下所示

字典:

{
    "value": [
        {
            "ctgid": "1",
            "catename": "tow"
        },
        {
            "ctgid": "2",
            "catename": "towrequest"
        },
        {
            "ctgid": "3",
            "catename": "electrical"
        },
        {
            "ctgid": "5",
            "catename": "plumber"
        },
        {
            "ctgid": "6",
            "catename": "maintenance"
        },
        {
            "ctgid": "7",
            "catename": "home"
        },
        {
            "ctgid": "8",
            "catename": "computer"
        },
        {
            "ctgid": "9",
            "catename": "1q2w"
        }
    ]
}

类名数组:

(
tow,
towrequest,
plumber
)

Array 中有一个 catename 列表。根据上面的字典,我想在上面的数组中创建与 catename 相关的 ctgid 数组。

所以我的最终输出应该是:

catgid 数组:

(
1,
2,
5
)

注意:我可以用循环来做,但我不想使用任何循环。

最佳答案

//Json data
NSString *jsonString = @"{\"value\":[{\"ctgid\":\"1\",\"catename\":\"tow\"},{\"ctgid\":\"2\",\"catename\":\"towrequest\"},{\"ctgid\":\"3\",\"catename\":\"electrical\"},{\"ctgid\":\"5\",\"catename\":\"plumber\"},{\"ctgid\":\"6\",\"catename\":\"maintenance\"},{\"ctgid\":\"7\",\"catename\":\"home\"},{\"ctgid\":\"8\",\"catename\":\"computer\"},{\"ctgid\":\"9\",\"catename\":\"1q2w\"}]}";
NSData *data = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
//Converting the data into NSDictionary
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];

//Get the array of objects
NSArray *array = [NSArray arrayWithArray:[json objectForKey:@"value" ]];

//Category filter names
NSArray *filteCatename = [NSArray arrayWithObjects:@"tow",@"towrequest",@"plumber",nil];
//NSPreicate to filter the array using "in" constrain
NSArray *filtered = [array filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"(catename in %@)", filteCatename]];

您可以使用 NSPredicate 直接过滤 NSArray 而无需循环。

关于ios - 创建从字典数组中过滤的数组,并将数组作为输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22368986/

相关文章:

ios - 将 UIImagePickerController 与 UICollectionView 一起使用

ios 8.3 NSLayoutAttributeNotAnAttribute 崩溃

iphone - CLGeocoder reverseGeocodeLocation 无法产生一致的结果

swift - 在 Swift 中将 NSArray 转换为 NSMutableArray

iphone - 我怎样才能创建这个数据结构?

iphone - 如何更新应用程序图标和启动图像以同时支持 IOS 6 和 7?

ios - 是否有用于访问通话记录的 iOS API?

ios - 如何在 objective-c 中导航到新 Storyboard文件上的 View Controller

ios - iPhone - 为什么全屏不起作用但在 iPad 上却可以?

ios - 使用 NSPredicate 过滤 NSNumber 的 NSArray 和 NSNumber 的 NSArray