在其他NSArray的基础上显示来自NSArray的价值

时间:2012-12-05 06:44:21

标签: objective-c nsarray

(我的英语不好)。

我有两个NSArray。

实施例:      第一次NSArray 正在存储

NSArray category= { ID:1,Name:Category1;ID:2, Name: Category2;ID:3, Name:Category3;}

第二次NSArray 正在存储

 NSArray product= {cat_ID:1, Category-Name:Category1, product_ID:1, Name: Banana;
                cat_ID:1, Category-Name:Category1, product_ID:2, Name: apple;
                cat_ID:1, Category-Name:Category1, product_ID:3, Name: berry;
                cat_ID:2, Category-Name:Category2, product_ID:4, Name: cantaloupe;
                cat_ID:2, Category-Name:Category2, product_ID:5, Name: elderberry;
                cat_ID:2, Category-Name:Category2, product_ID:6, Name: ginger;
                cat_ID:2, Category-Name:Category2, product_ID:7, Name: watermelon;
                cat_ID:3, Category-Name:Category3, product_ID:8, Name: xigua;
                cat_ID:3, Category-Name:Category3, product_ID:9, Name: avocado;
                cat_ID:3, Category-Name:Category3, product_ID:10, Name: basil;
                cat_ID:3, Category-Name:Category3, product_ID:11, Name: alfalfa;
                cat_ID:3, Category-Name:Category3, product_ID:12, Name: blackcurrant;}

我想要的只是类别名称(我的意思是第一个NSArray category.name)等于第二个NSArray的类别名称(我的意思是product.Category-Name)然后打印所有产品名称。  示例:category.name == Category1;那么结果将是 Product.Name = Banana,Apple,Berry;

怎么做?

3 个答案:

答案 0 :(得分:1)

我建议你不要为这种逻辑制作数组。

您应该使用NSDictionary / NSMutableDictionary。

然后您可以通过NSPredicateFilter轻松过滤。

答案 1 :(得分:0)

从类似json的表示法,我们假设“{...}”中的键值对是NSDictionary对象。你有一组所说的NSDictionary对象,“[{...},{...},...]”

获取特定类别的产品:

NSString *category = @"Category1";
NSArray *result = [NSArray array];
for (NSDictionary *dic in products) {
    if ([[dic objectForKey:@"Category-Name"] isEqualToString: category])
        result = [result arrayByAddingObject: [dic objectForKey: @"Name"] ];
}

答案 2 :(得分:0)

您还可以使用NSPredicate

以紧凑的方式执行此任务
NSString *selectedCategory = @"Category1";

//filter array by category using predicate
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"Category-Name == %@", selectedCategory];

NSArray *filteredArray = [product filteredArrayUsingPredicate:predicate];  

或者只关注我的博客rajneesh071.blogspot.in了解更多信息