1

(私の英語は上手ではありません)。

NSArrayが2つあります。

例: 最初のNSArrayは保存しています

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

2番目の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;}

カテゴリ名(つまり、1番目のNSArray category.name)が2番目のNSArrayのカテゴリ名(つまり、product.Category-Name)と等しい場合は、すべての製品名を出力するだけです。 例:category.name == Category1; その場合、結果はProduct.Name = Banana、Apple、Berryになります。

これを行う方法?

4

3 に答える 3

1

この種のロジックには Array を作成しないことをお勧めします。

NSDictionary/NSMutableDictionary を使用する必要があります。

その後、NSPredicateFilter で簡単にフィルタリングできます。

于 2012-12-05T06:54:44.403 に答える
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をフォローして詳細を確認してください

于 2012-12-05T09:46:37.500 に答える
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"] ];
}
于 2012-12-05T07:01:22.090 に答える