I've a mutable dictionary (in form of [Int:Int]) and want that to save it. I would use NSUserDefaults like that:
var myDic: NSMutableDictionary = [:]
myDic = [1:2]
NSUserDefaults.standardUserDefaults().setObject(myDic, forKey: "myDic")
but with that I get an error:
Thread 1: signal SIGABRT
I have no idea why.
setObject(_:forKey:)
can’t accept Dictionary
with a key which is integer type. The method requires property-list objects, but myDic = [1:2]
is not property-list object.
There are two documents about it.
setObject(_:forKey:) of NSUserDefaults
The value
parameter can be only property list objects: NSData
,
NSString
, NSNumber
, NSDate
, NSArray
, or NSDictionary
. For
NSArray
and NSDictionary
objects, their contents must be property
list objects.
About Property Lists
And although NSDictionary
and CFDictionary
objects allow their keys to
be objects of any type, if the keys are not string objects, the
collections are not property-list objects.
If you set a integer-key to Dictionary
, the Dictionary
object cannot be used for a value of setObject
. You have to use a string for the key like this:
myDic = ["1": 2]