2016-07-21 4 views
0

Я пытаюсь обновить свой проект до Swift 3 с базовыми данными. Я столкнулся с серьезной ошибкой, и я действительно не знаю, что происходит. Моя базовая модель данных имеет следующие свойства:Ошибка Xcode 8 Core Data

@NSManaged var name: String? 
@NSManaged var count: NSNumber 
@NSManaged var isDelivered: NSNumber 

Я могу установить любые другие свойства, но isDelivered. Когда я пытаюсь использовать

myobject.isDelivered = true 

Я получаю следующую ошибку на консоли.

Нагрузочного приложение из-за неперехваченное исключением 'NSInvalidArgumentException', причину: '- [MyModel setDelivered]: непризнанного селектор послал к экземпляру 0x6000000d3780'

Похоже, Xcode удаляет is части из isDelivered Свойство, которое приводит к сбою приложения. Есть ли что-то, что я могу сделать, чтобы предотвратить это, кроме обновления моей модели? Благодарю.

+0

Вы пробовали 'myObject.isDelivered = NSNumber (booleanLiteral: true)'? – njuri

+0

Тот же результат. Как вы можете видеть из журнала, сообщение должно быть отправлено 'isDelivered', а не' Delivered'. Что-то странное происходит – Meanteacher

+0

попытайтесь сделать isDelivered как boolean & optional. –

ответ

0

Это BUG. Это очень запутанная ошибка. Для тех, кто посещает этот вопрос, вот ответ, который я нашел на форумах Apple.

Текущая версия бета-версии Swift 3, по-видимому, имеет некоторые недостатки в обработке свойств с префиксом «есть».

https://forums.developer.apple.com/thread/50863

Ответ от пользователя OOPer

Избегайте использования "является" в вашем имени свойства, или если вы не можете, попробуйте следующее:

newWriter.setValue(true, forKey: "favorite") 

(Update) Попытайтесь добавить имя @objc к объекту:

@NSManaged @objc(isFavorite) var isFavorite: Bool 
Смежные вопросы