2016-10-31 2 views
0

Эй, я получаю эту BAD доступ на линииКонфигурация модели, используемой для открытия магазина несовместима с той, которая была использована для создания магазина

try managedContext.save() 

Кодекс пробегов pefectly, пока не пытаться спасти мою стоимость. Я думаю, что это может быть связано с использованием «копии» сущности, а не фактической сущности. Но это неудобно, так как вы не можете отредактировать оргинальную модель в коде. Так что все, что мне нужно сделать, это остановить этот плохой доступ при попытке «.save()» и им хорошо. он находится на четвертой последней строке кода.

Так что в основном при использовании try managedContext.save(). Я создаю catch, который будет печатать ошибку. поэтому я положил «!» символ из «try», чтобы я мог понять, почему приложение выдает ошибку, и это то, что я получил

фатальная ошибка: 'try!' выражение неожиданно вызвало ошибку: Error Domain = NSCocoaErrorDomain Code = 134020 «Конфигурация модели, используемая для открытия хранилища, несовместима с той, которая использовалась для создания хранилища».

Picture of Error

Код:

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

var properties0 = Array<NSAttributeDescription>() 

let playersList0 = NSEntityDescription.entityForName("PlayersList1", inManagedObjectContext: managedContext) 

let copy = playersList0!.copy() as! NSEntityDescription 

let contentTypeAttribute0 = NSAttributeDescription() 
contentTypeAttribute0.name = "firstName" 
contentTypeAttribute0.attributeValueClassName = "firstName" 
contentTypeAttribute0.attributeType = .StringAttributeType 
contentTypeAttribute0.optional = true 
properties0.append(contentTypeAttribute0) 


copy.properties = properties0 

let playerslistCopyto = NSManagedObject(entity: copy, insertIntoManagedObjectContext: managedContext) 

playerslistCopyto.setValue("John", forKey: "firstName") 



do { 
    try managedContext.save() 
} catch { 
    print("Error") //prints Error everytime 
} 

Это печатает "Ошибка" Everytime как улов. Мне просто нужно выяснить, как сохранить «копию»

ответ

0

Эта ошибка указана, потому что у вас есть другая модель базы данных, к которой вы в настоящее время пытаетесь получить доступ, скорее всего, она требует миграции. Это произошло потому, что вы создали и сохранили данные с помощью модели, затем отредактировали (добавили, удалили или переименовали, например), а затем попытались получить доступ к хранилищу данных, не выполняя миграцию. Моя рекомендация - если вы все еще не выпустили приложение, удалите базу данных (удалите приложение) и повторите попытку. Еще одна вещь, которую вы можете сделать, - показать основные данные для облегчения миграции. У Apple есть хороший учебник с кодом here

+0

Ok i havent выпустил приложение и перезагрузил ive и удалил мое приложение с моего телефона несколько раз, и я смотрел в MigicalRecord прямо сейчас. Также у вас будет хорошая ссылка, чтобы перейти к настройке кода для нее. Ive никогда не слышал о MagicalRecord еще @Sealos – Hunter

+0

О, извините! Я, хотя я читал о волшебной записи в вашем посте, мой плохой. Вы можете более подробно ознакомиться с облегченной миграцией, используя только основные данные здесь: https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/vmLightweightMigration.html. – Sealos

+0

ok thanks @Sealos – Hunter

0

Вы, должно быть, отредактировали файл модели. Вам необходимо выполнить автоматическую миграцию. The Ray Wenderlich tutorial подходит для этого.

NSEntityDescription, о котором вы читаете, - это не тот, который вы сейчас используете, чтобы попытаться сохранить, а Core Data перестает создавать беспорядочный беспорядок. Вы редактировали название модели или меняли ее тип данных где-то на этом пути?

+0

файл с именем .xcdatamodeld i replace с тем же точным именем, что и раньше, поэтому я не уверен, что это будет проблема, но я смотрю на учебник теперь спасибо – Hunter

+0

Когда вы читаете из существующего файла сохранения, определение модели также определено там. Здесь Core Data знает, что существует несоответствие. – Derek

+0

Полезно знать, что я собираюсь воспроизвести ошибку, чтобы увидеть – Hunter

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

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