0

Я создаю новое приложение, и я решил попробовать его быстро разработать. Я использую CoreData, и у меня странное поведение, я думаю.swift Ошибка инициализации подкласса NSManagedObject

Я создаю новый товар (NSManagedObject подкласс), как это:

let managedObjectContext: NSManagedObjectContext = (UIApplication.sharedApplication().delegate as AppDelegate).managedObjectContext! 

    self.newItem = NSEntityDescription.insertNewObjectForEntityForName("Item", inManagedObjectContext: managedObjectContext) as Item 

    self.newItem.setValue(NSDate(), forKey: "startDate") 

при печати на STARTDATE, всегда равна нулю. То же самое происходит с свойствами объекта (ссылка на другие объекты).

В отладчике кажется, что объект (newItem) хорошо инсталлирован (в качестве типа объекта я вижу (myapp.Item!)), Но кажется, что отладчик не очень удобен для пользователя с CoreData. Я не нашел способа проверить или распечатать все свойства объекта, как это было в объективе C.

Есть ли что-то, что мне не хватает здесь? Мне кажется, что это неправдоподобно?

Спасибо.

ответ

2

То, что вы видите тип объекта в отладчике, не означает, что объект правильно инициализирован. Это, скорее всего, просто показывает вам тип, который вы объявили в своем классе при определении self.newItem.

Согласен, отладчик Swift имеет много желаний. Вы не можете полагаться на него, чтобы отлаживать эту ситуацию, если вы не хотите изучать более сложные команды отладчика, но набрав столько же, если вместо этого вы вставляете логические операторы в свой код.

Проверьте и убедитесь, что

  • ваш управляемый контекстный объект не nil
  • вашего метод вставки действительно создает правильный Item объект, который не является nil
  • вашего управляемого объекта подкласс для Item лица правильно сконфигурировано

Возможно, вы хотите попробовать создать новый локальный Item, перед тем как назначить его self.newItem, чтобы устранить любые ошибки ivar.

Попытайтесь увидеть, что-либо изменится, если вы сохраните контекст.

Попытайтесь привыкнуть к доступу к атрибуту с помощью свойств подкласса, например newItem.startDate, а не полагаться на метод, подверженный ошибкам valueForKey.

+0

Спасибо за ваш ответ. На самом деле это немного страннее. Когда я печатаю значения iVar (используя po в отладчике), они все нуль сразу после того, как я их установил. Но через несколько секунд кажется, что они заполнены. Очень странно. Это быстрое поведение/CoreData из-за проблем компилятора/отладчика? – Khal

+0

Для проверки содержимого переменных используйте 'printf' или' NSLog'. – Mundi

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

  • Нет связанных вопросов^_^