Не NSValue NSObject? Так почему же я врезаться наSwift NSCoding с NSValue
var coordinatesRawData = NSValue(MKCoordinate: coordinates.first!)
if coordinatesRawData != nil {
// Crashing here. I have a valid NSValue object
aCoder.encodeObject(coordinatesRawData, forKey: "coordinatesRawData")
}
Error Вход
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSKeyedArchiver encodeValueOfObjCType:at:]: this archiver cannot encode structs'
Но если я это
var coordinatesRawData = NSValue()
aCoder.encodeObject(coordinatesRawData, forKey: "coordinatesRawData")
Там нет аварии - Оба NSValues .. правильно?
Обратите внимание, что все мои другие NSCoding/Decoding работают нормально.
Я считаю, что это связано с тем, что ключевой архиватор не может получить ключи для записей структуры. Альтернативой является использование NSArchiver, который может работать для вас, за счет меньшей гибкости. Или не используйте структуру и сохраняйте отдельные поля или создайте свой собственный объект, который поддерживает NSCoding. –
Я предположил, что NSValue был похож на Wrapper, я мог бы вложить этот Struct и быть золотым. Угадайте, у меня есть рабочая работа, но это было бы чище. – DogCoffee
Мне кажется, что NSValue (MKCoordinate :) сломан. Вы должны указать отчет об ошибке. – matt