Я пытался получить поведение, как если бы моя сущность Core Data могла иметь атрибут NSMutableData. Для этого мой NSManagedObject (называемый Data) имел атрибут NSData и ивара NSMutableData. Мое приложение берет образцы данных с датчика и добавляет каждую точку данных к набору данных - вот почему мне понадобился этот дизайн.
На каждой новой точке данных был добавлен NSMutableData, а затем для атрибута NSData было установлено NSMutableData.
Я подозреваю, что из-за того, что указатель NSData не изменился (хотя его содержимое было), базовые данные не оценили количество изменений. Вызов -hasChanged для NSManagedObjectContext показал, что произошли изменения, а вызов -updatedObjects даже перечислил объект Data как измененный. Но реальные записываемые данные, похоже, были усечены (иногда).
Чтобы обойти это, я немного изменил вещи. Новые точки данных все еще добавляются к NSMutableData , но Атрибут NSData устанавливается только после завершения выборки. Это означает, что существует вероятность того, что сбой может привести к усечению данных, но, по большей части, это обходное решение, похоже, решило проблему.
Caveat emptor: ошибка всегда была прерывистой, так что, возможно, она все еще существует, но ее сложнее проявить.