2016-10-31 19 views
0

嘿,我不斷收到在行這個壞訪問用於開實體店的型號配置與用來創建存儲在一個不兼容的

try managedContext.save() 

代碼運行pefectly直到它試圖挽救我的值。我認爲這可能是因爲使用實體的「副本」而不是實際的實體。但是,由於您不能在代碼中實際編輯原始模型,因此這是非常祕密的。所以我所要做的就是在嘗試「.save()」和im好的時候停止這種不良訪問。它在代碼的第四行。

所以基本上當使用try managedContext.save()。我創建一個會打印錯誤的catch。所以我把「!」從「嘗試」的符號,以便我可以看到爲什麼應用程序拋出錯誤,這就是我得到的

致命錯誤:'試試!'表達式意外地引發了一個錯誤:錯誤域= NSCocoaErrorDomain代碼= 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 
} 

這打印 「錯誤」 每次爲續。我基本上只需要瞭解如何保存「複製」

回答

0

發生此錯誤是因爲您擁有與當前嘗試訪問的數據庫不同的模型,它很可能需要遷移。這是因爲您使用模型創建並保存了數據,然後進行了編輯(例如添加,刪除或重命名),然後嘗試訪問數據存儲而未執行遷移。我的建議是如果你還沒有發佈應用程序,刪除數據庫(卸載應用程序),然後再試一次。你可以做的另一件事是告訴核心數據進行輕量級遷移。蘋果有一個很好的教程代碼here

+0

好吧,我還沒有發佈的應用程序,並重新啓動,並從我的手機多次刪除我的應用程序,即時看着MigicalRecord現在。你也會有一個很好的鏈接去進行代碼設置。我從來沒有聽說過MagicalRecord呢@Sealos – Hunter

+0

哦對不起!儘管我在你的文章中讀到了關於魔法記錄的信息,但我的糟糕之處。您可以在此處僅使用核心數據深入瞭解有關輕量級遷移的更多信息:https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/vmLightweightMigration.html。 – Sealos

+0

好的謝謝@Sealos – Hunter

0

你必須編輯你的模型文件。你需要做一個自動遷移。 The Ray Wenderlich tutorial就足夠了。

您從中讀取的NSEntityDescription不是您正在使用的嘗試保存的內容,而Core Data阻止您創建未遷移的混亂。您是否編輯過模型名稱或將其數據類型更改爲某處?

+0

該文件名爲.xcdatamodeld我用相同的確切名稱替換它是以前所以即時通訊不知道如果這將是問題,但即時看看教程現在感謝 – Hunter

+0

當您從現有的保存文件讀取時,那裏也定義了模型的定義。這是Core Data知道存在不匹配的地方。 – Derek

+0

很高興知道即將重現的錯誤 – Hunter

相關問題