gpt4 book ai didi

iOS:在 for 循环中更新 NSMutableArray 的对象

转载 作者:行者123 更新时间:2023-11-29 01:43:18 25 4
gpt4 key购买 nike

我需要更新/添加 NSMutableArray 中的键 -> 值对。

如果尚未设置 key ,我想添加一个具有固定值的 key 。

我尝试了以下操作 - 但应用程序在 addObject 处崩溃,并出现“发送到不可变对象(immutable对象)的变异方法”错误:

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *bookmarks = [defaults mutableArrayValueForKey:@"bookmarks"];

for (id bookmark in bookmarks) {

if ([bookmark objectForKey:@"type"] == NULL){
[bookmark addObject:@"old" forKey:@"type"];
}
}

[[NSUserDefaults standardUserDefaults] synchronize];

最佳答案

您的外部数组包含不可变字典。一种选择如下:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *bookmarks = [defaults mutableArrayValueForKey:@"bookmarks"];

[booksmarks enumerateObjectsWithOptions:NSEnumerationConcurrent usingBlock:^(NSDictionary *bookmark, NSUInteger index, BOOL *stop) {
if (!bookmark[@"type"]) {
NSMutableDictionary *mutable = [bookmark mutableCopy];
mutable[@"type"] = @"old";
[bookmarks replaceObjectAtIndex:index withObject:[mutable copy]];
}
}];

// Update NSUserDefaults
[[NSUserDefaults standardUserDefaults] setObject:bookmarks forKey:@"bookmarks"];

这应该很高效,因为它可以同时更新多个词典。

关于iOS:在 for 循环中更新 NSMutableArray 的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32193597/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com