【问题标题】:problem in nsuserdefaultsnsuserdefaults 中的问题
【发布时间】:2011-03-05 21:50:00
【问题描述】:

大家好,我在 nsuser 默认设置中仍有问题,我会详细说明情况

  1. 首先我在 appDelegate 中声明了 nsmutable 数组,并在 NSUserDefaults 中使用 For Key@"abc"

  2. 设置它
  3. 在 FirstView Controller 中,我首先从 NSUserDefaults 获取数组并将其值保存在 NSMutable 数组中

  4. 当点击说 abcButton 时,我创建了一个字典并在其中添加值,例如

    [abcDictionar setObject:[[abcMutableArray objectAtIndex:indexPath.row] objectForKey:@"abc"]             forKey:@"abc"];
    
  5. 当我在 NSDictionary 中添加所有值然后我在 NSMutable 数组中添加 NSDictionary 像这样

    [abcMutableArray addObject:abcDictionary];
    
  6. 然后我保存它 NSUserDefaults 它给了我第 4 点的例外

  7. 当我在 Point One 中添加 nsdictionary 时,一切正常,但数组中的数据不明确,当我要在 tableview 中显示时引发异常

如果有人有任何想法,请提前告诉我谢谢...:)

【问题讨论】:

  • 您遇到的异常是什么?
  • NSMutableArray*abcJobMutableArray=[[NSMutableArrayalloc]init]; [prefs setObject:abcJobMutableArray forKey:@"abcJobMutableArray"]; in .m AppDelegatre
  • in abcClass.m file i'll write this code NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; xyzMutableArray = (NSMutableArray *)[prefs objectForKey:@"abcJobMutableArray"]; [abcJobDictionary setObject:[[abcListMutableArray objectAtIndex:indexPath.row] objectForKey:@"xyz"] forKey:@"abc"]; [favouriteJobsMutableArray addObject:favouriteJobDictionary];
  • 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“-[__NSCFArray insertObject:atIndex:]:将变异方法发送到不可变对象”***第一次抛出调用堆栈:

标签: iphone ios nsuserdefaults


【解决方案1】:

NSUserDefaults 不存储可变对象,只存储不可变对象。当您从中检索对象时,如果您希望对其进行变异,则必须将它们强制转换/复制到可变对象中。

还要注意:

NSUserDefaults 类提供了方便的方法来访问浮点、双精度、整数、布尔值和 URL 等常见类型。默认对象必须是属性列表,即(或集合的实例组合)的实例:NSDataNSStringNSNumberNSDateNSArrayNSDictionary .如果要存储任何其他类型的对象,通常应该将其归档以创建NSData 的实例。

来自NSUserDefaults 文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-08
    • 2016-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多