我有一个NSArrayNSDictionaries。我需要NSArray的更新的NSDictionaries,其值是用新值更新的字典键之一。

请参见下面的NSArray结构。如果Key3与某个值匹配(例如2),我想在此结构内更新Key1的值。最快的方法是什么?我不想使用传统的For循环。

[myArray valueForKeyPath:@"@unionOfObjects.Key3"];

<__NSCFArray 0xe70c10>(
{
    Key1 = 1;
    Key2 = "New Location";
    Key3 =     (
        Data1,
        Data2,
        Data3
    );
},
{
    Key1 = 2;
    Key2 = "Old Location";
    Key3 =     (
        Data1,
        Data2,
        Data4
    );
}
)

最佳答案

我们可以使用谓词来解决它:

NSArray *dictionaryArray;
NSNumber *key =@2;
NSPredicate *predicate =[NSPredicate predicateWithFormat:@"Key1=%@",key];
NSArray *result =[dictionaryArray filteredArrayUsingPredicate:predicate];

结果数组现在所有字典都具有(key1 = 2)

字典不能直接编辑,它们必须是NSMutableDictionary才能编辑。假设它们是NSMutableDictionary实例:
NSMutableDictionary *dic =result[0];
[dic setObject:someObject forKey:@"key3"];

关于ios - 更新NSArray中的NSDictionary,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21484706/

10-16 22:04