gpt4 book ai didi

iphone - 将对象设置为NSMutableDictionary之后的SIGABRT

转载 作者:行者123 更新时间:2023-12-01 18:00:59 25 4
gpt4 key购买 nike

话题说明了一切。我有一个字典字典(是的,这是一个字典接收!)存储在NSUserDefaults中。出于某种原因,在将对象设置为字典之后,我就在main.m上获得了SIGABRT。这是代码:

planDict = [[NSUserDefaults standardUserDefaults]objectForKey:[NSString stringWithFormat:@"Plan_%@", self.planName]];
pageOne = [planDict objectForKey:@"Page_1"];
pageTwo = [planDict objectForKey:@"Page_2"];
pageThree = [planDict objectForKey:@"Page_3"];
[pageOne setObject:@"The Object" forKey:@"First Key"];
[pageOne setObject:@"The Other Object" forKey:@"Second Key"];
//other setters

我已经调试了它,直到 [pageOne setObject:@"TheObject" forKey:@"First Key"];行为止。当我跨过它时,它刚刚崩溃了(main.m中的SIGABRT)。

这是崩溃前的日志:
(gdb) po planDict
{
"Page_1" = {
};
"Page_2" = {
};
"Page_3" = {
};
}
(gdb) po pageOne
{
}
(gdb) po pageTwo
{
}
(gdb) po pageThree
{
}

任何帮助将不胜感激,谢谢。

最佳答案

询问NSUserDefaults返回的字典将是不可变的字典,字典中的任何字典等也将是不可变的字典。

因此,在不可变字典上设置对象确实会引发SIGABRT错误,因为返回的对象不了解您发送给它的方法。

您将需要创建字典的可变副本,并为该字典中的每个包含的字典制作可变副本。

希望能解决您的错误。

关于iphone - 将对象设置为NSMutableDictionary之后的SIGABRT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9988851/

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