2014-10-07 7 views
4

Я пишу приложение Swift для iOS. Мне нужно установить, а затем вернуть объект UIColor в NSUserDefaults.UIColor в NSUserDefaults Swift/iOs8

Я его так:

var userSelectedColor : NSData? = (NSUserDefaults.standardUserDefaults().objectForKey("UserSelectedColor") as? NSData) 

if (userSelectedColor == nil) { 
    var colorToSetAsDefault : UIColor = UIColor.redColor() 
    var data : NSData = NSKeyedArchiver.archivedDataWithRootObject(colorToSetAsDefault) 
    NSUserDefaults.standardUserDefaults().setObject(data, forKey: "UserSelectedColor") 
    NSUserDefaults.standardUserDefaults().synchronize() 
    println("SET DEFAULT USER COLOR TO RED") 
} 

Но я не могу показаться, чтобы получить его обратно, потому что разархивировать метод на NSKeyedArchiver, кажется, отсутствует в быстром

var userSelectedColorData: NSData? = (NSUserDefaults.standardUserDefaults().objectForKey("UserSelectedColor") as NSData) 
var userSelectedColor : UIColor? = NSKeyedArchiver.unarchiveObjectWithData(userSelectedColorData) 

Как правильно способ сделать это в Swift/iOs8?

ответ

6

Unarchiving делается с NSKeyedUnarchiver, а не с NSKeyedArchiver. Вы также должны использовать условные слепки (as?), чтобы убедиться, что приложение не откажет, если спас пользователя по умолчанию не ожидаемого типа:

if let userSelectedColorData = NSUserDefaults.standardUserDefaults().objectForKey("UserSelectedColor") as? NSData { 
    if let userSelectedColor = NSKeyedUnarchiver.unarchiveObjectWithData(userSelectedColorData) as? UIColor { 
     println(userSelectedColor) 
    } 
} 
+0

См [этот ответ] (http://stackoverflow.com/a/30576832/3681880) для этого с расширениями. – Suragch

Смежные вопросы