web-dev-qa-db-ja.com

キーを使用してNSMutableDictionaryにオブジェクトを追加するにはどうすればよいですか?

私はplistを持っています、そのplistから可変辞書に要素を追加したいです。最初にplistのユーザー名をチェックし、現在の名前が同じかどうかを確認してから、その辞書rom plistにすべての値を追加し、割り当てます同じキー?

 for(int i=0;i<[displayList count];i++)
    {
        if([[[data valueForKey:@"username"] objectAtIndex:i] isEqualToString:user])
        {
            [finalBooks setValue:[[data valueForKey:@"ID"] objectAtIndex:i] forKey:@"ID"];
            [finalBooks setValue:[[data valueForKey:@"name"] objectAtIndex:i] forKey:@"name"];
            [finalBooks setValue:[[data valueForKey:@"Place"] objectAtIndex:i] forKey:@"Place"];
          [finalBooks setValue:[[data valueForKey:@"username"] objectAtIndex:i] forKey:@"username"];


        }
    }

[displayList count]この値は7なので、各値は6回置き換えられ、最終的な値のみを取得しますすべての値がユーザー名に一致する必要がありますiその可変辞書

5
user2377290

辞書の配列を作成する必要があると思います。このようにfinalBooks辞書をNSMutableArrayに追加するだけです

NSMutableArray *finalArray = [[NSMutableArray alloc]init];

(int i=0;i<[displayList count];i++)
{
    if([[[data valueForKey:@"username"] objectAtIndex:i] isEqualToString:user])
    {
        [finalBooks setValue:[[data valueForKey:@"ID"] objectAtIndex:i] forKey:@"ID"];
        [finalBooks setValue:[[data valueForKey:@"name"] objectAtIndex:i] forKey:@"name"];
        [finalBooks setValue:[[data valueForKey:@"Place"] objectAtIndex:i] forKey:@"Place"];
        [finalBooks setValue:[[data valueForKey:@"username"] objectAtIndex:i] forKey:@"username"];

        [finalArray addObject:finalBooks];
    }
}

そして、あなたは辞書の配列を取得します。幸運を !!

12
Ajay Chaudhary

キーが同じ場合、NSMutableDictionaryのsetValueメソッドが値を置き換えます。したがって、実行できるのは、配列または辞書のNSMutableDictionaryを使用することです。

NSMutableDictionary *userDictionary=[[NSMutableDictionary alloc]init];

(int i=0;i<[displayList count];i++)
{
    if([[[data valueForKey:@"username"] objectAtIndex:i] isEqualToString:user])
    {
        [finalBooks setValue:[[data valueForKey:@"ID"] objectAtIndex:i] forKey:@"ID"];
        [finalBooks setValue:[[data valueForKey:@"name"] objectAtIndex:i] forKey:@"name"];
        [finalBooks setValue:[[data valueForKey:@"Place"] objectAtIndex:i] forKey:@"Place"];
        [finalBooks setValue:[[data valueForKey:@"username"] objectAtIndex:i] forKey:@"username"];

        [userDictionary setObject:finalBooks forKey:user];
    }
}

すべてを1つの辞書にまとめたい場合は、NSString stringWithFormat:@"ID+%@",username],...[NSString stringWithFormat:@"username+%@",username]などの一意のキーを使用することをお勧めします。

しかし、それは厄介に見えます:)

3
Gihan