【问题标题】:How to set Dictionary in NSUserDefault in swift?如何快速在 NSUserDefaults 中设置字典?
【发布时间】:2016-02-28 23:49:47
【问题描述】:

我有一个可变字典(以 [Int:Int] 的形式)并希望它保存它。我会像这样使用 NSUserDefaults:

    var myDic: NSMutableDictionary = [:]
        myDic = [1:2]
        NSUserDefaults.standardUserDefaults().setObject(myDic, forKey: "myDic")

但是我得到一个错误:

线程 1:信号 SIGABRT

我不知道为什么。

【问题讨论】:

    标签: swift nsdictionary nsuserdefaults nsmutabledictionary sigabrt


    【解决方案1】:

    setObject(_:forKey:) 不能接受带有整数类型键的Dictionary。该方法需要属性列表对象,但myDic = [1:2] 不是属性列表对象。

    有两个关于它的文件。

    setObject(_:forKey:) of NSUserDefaults

    value参数只能是属性列表对象:NSDataNSStringNSNumberNSDateNSArrayNSDictionary。为了 NSArrayNSDictionary 对象,它们的内容必须是属性 列出对象。

    About Property Lists

    虽然NSDictionaryCFDictionary 对象允许它们的键 是任何类型的对象,如果键不是字符串对象,则 集合不是属性列表对象。

    如果将整数键设置为Dictionary,则Dictionary 对象不能用于setObject 的值。您必须像这样为键使用字符串:

    myDic = ["1": 2]
    

    【讨论】:

    • Dayum,这是一个很好的答案。真的很像老板娘。我喜欢你。非常感谢。我会尽快尝试..
    • 好的,它可以保存.. 但是我怎样才能重新转换回 int,我也想向它添加一些对象。我现在通过创建let tempDic = myDic.muableCopy() 解决了这一切。有没有更简单的方法?
    • 无论如何,它可以。所以:非常感谢!!
    猜你喜欢
    • 2014-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多