gpt4 book ai didi

ios - 更新 NSMutableOrderedSet 对象中键的值

转载 作者:行者123 更新时间:2023-11-28 21:49:46 26 4
gpt4 key购买 nike

我有以下陈述

[[myListSet objectAtIndex:sender.tag] setValue:@"1" forKey:@"STATUS"];

其中 myListSet 定义为

NSMutableOrderedSet *myListSet;

myListSet 是一个字典条目列表,每个条目有 6 个键值对,其中一个键是 STATUS。

我想我可以使用上面的行更新其中一个词典中的值。它在模拟器中有效,但在我的 iPhone 上无效。

我得到的错误是*** 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“-[__NSCFDictionary setObject:forKey:]:发送到不可变对象(immutable对象)的变异方法”

我想我更新条目的想法是不正确的。关于如何更新此集合中的一个字典条目的其中一个键的值的任何想法?

最佳答案

NSMutableOrderedSet 允许您修改其直接子项。您看到的错误是因为您的 NSMutableOrderedSet 包含 NSDictionary 对象而不是 NSMutableDictionary 对象。

为了修改子词典,您需要它们是 NSMutableDictionary 对象。您可以通过以下方式做到这一点:

NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithDictionary:[myListSet objectAtIndex:sender.tag]];
dict[@"STATUS"] = @"1";
[myListSet replaceObjectAtIndex:sender.tag withObject:dict];

您应该知道,任何持有对原始不可变字典的引用的内容仍将持有该字典,而不是您修改后的字典。

关于ios - 更新 NSMutableOrderedSet 对象中键的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28753511/

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