Я создал собственный класс под названием test. Я сделал переменную под названием «игра» равной тесту. Я попытался сохранить «игру» в NSUserDefaults и попытался напечатать значения из «игры». После запуска проекта у меня возникла ошибка: «Thread 1: signal SIGABRT». Как сохранить мой пользовательский объект в NSUserDefaults без получения этой ошибки?Как сохранить пользовательский класс в swift для NSUserDefaults?
Вот мой класс:
class Test {
var boolean = false
var int = 1
var arr = ["one": 1]
}
Вот моя экономия код:
let defaults = NSUserDefaults.standardUserDefaults()
let game = Test()
game.arr = ["two": 3]
game.hi = true
game.int = 100
defaults.setObject(game, forKey: "SG")
let gameSet = defaults.objectForKey("SG")! as! Test
print(gameSet.int)
print(gameSet.boolean)
print(gameSet.arr["one"])
Это все в методе viewDidLoad. Исключая тестовый класс.
Вам необходимо сделать свой класс совместимым с NSCoding и использовать NSKeyedArchiver для преобразования в NSData перед сохранением в NSUserDefaults или для сохранения его в файл plist –
@ leo-dabus, и что делать, если я не хочу использовать NSObject в качестве суперкласса ? –
http://stackoverflow.com/a/33194374/2303865 –