0

現時点では plist ファイルを使用していますが、バックエンドが最終的に構築されたときに json に切り替える予定です。したがって、今のところ、私の plist は一連の辞書を含む配列です。

この情報を使用して、特定の値を持つ辞書のみを含む新しい配列を作成したいと思います。

例えば。私のplistには、次のような場所がたくさん含まれています:
key: location value:example place name here
key: type value:indoor

タイプ値として「indoor」が設定されているものだけを含む配列を作成したいと考えています。そしておそらく、すべての「屋外」の場所を含む 2 番目の場所です。

これを行うための最善の方法は何ですか。または、何らかのチュートリアルに誘導される可能性があります。

ありがとう。

4

2 に答える 2

1

実際に行う必要があるのは、配列を 2 つの配列にソートすることだけです。あなたのためにこれを行う直接的な方法はありません。私の提案は、配列に対して高速な列挙を使用し、条件付きで 2 つの新しい配列に分割することです。

NSMutableArray *locations = [[NSMutableArray alloc] init];
NSMutableArray *type = [[NSMutableArray alloc] init];

for (NSDictionary *dict in MyPlistArray) {
    if ([dict valueForKey:@"locationKey"]) {
        [locations addObject:dict];
    } else if ([dict valueForKey:@"typeKey"]) {
        [type addObject:dict];
    }
}

各配列に入れるキーを決定するために別の方法を使用する必要があるかもしれませんが、一般的な考え方は理解できます。

また、辞書の配列を永続化する必要があると想定しているため、ローカル変数の代わりにプロパティとして設定することができます。

于 2013-09-17T00:48:37.603 に答える
1

配列をループして、適切な辞書を新しい配列に追加するだけです。

NSMutableArray *arrayIndoor = [NSMutableArray array];
NSMutableArray *arrayOutdoor = [NSMutableArray array];
NSString *type;
for (NSDictionary *dict in arrayPList) {
    type = [dict objectForKey:@"type"];
    if ([type isEqualToString:@"indoor"]) 
        [arrayIndoor addObject:dict];
    else if ([type isEqualToString:@"indoor"]) 
        [arrayOutdoor addObject:dict];
}
于 2013-09-17T00:48:45.593 に答える