0
我使用的持久性容器裝載數據tableviewcontroller,但每次我要保存的數據,它告訴我這樣奇怪的錯誤。的iOS核心數據NSCocoaErrorDomain 134020
錯誤發生,每次我加載其他VC(來自的TabBar)後,進入好友列表頁面。 如果我直接打開好友列表頁面,則不會發生錯誤。
注*:我在每一個視圖控制器容器初始化有權訪問的核心數據。
你能幫我嗎?
An error occurred while saving: Error Domain=NSCocoaErrorDomain Code=134020 "(null)" UserInfo={NSAffectedObjectsErrorKey=<Friend: 0x6080008954a0> (entity: Friend; id: 0x608000a33340 <x-coredata:///Friend/t78E3F129-DFFC-46DC-B542-7B2378382AB587> ; data: {
accepted = 1;
canAccept = 0;
name = "Foo Bar";
profilePicture = nil;
username = foobar;
}),
NSUnderlyingException=Store <NSSQLCore: 0x600000375840> (URL: file:///Users/foobar/Library/Developer/CoreSimulator/Devices/69C6FA49-8B83-4289-AA3B-90D8FE065492/data/Containers/Data/Application/27388AC0-B1C6-4D25-8194-3DCA8AF4818C/Library/Application%20Support/Renungan.sqlite) cannot hold instances of entity (<NSEntityDescription: 0x60800035c510>) name Friend, managedObjectClassName Friend, renamingIdentifier Friend, isAbstract 0, superentity name (null), properties {
accepted = "(<NSAttributeDescription: 0x6080006e9080>), name accepted, isOptional 0, isTransient 0, entity Friend, renamingIdentifier accepted, validation predicates (\n), warnings (\n), versionHashModifier (null)\n userInfo {\n}, attributeType 800 , attributeValueClassName NSNumber, defaultValue (null)";
canAccept = "(<NSAttributeDescription: 0x6080006e9100>), name canAccept, isOptional 0, isTransient 0, entity Friend, renamingIdentifier canAccept, validation predicates (\n), warnings (\n), versionHashModifier (null)\n userInfo {\n}, attributeType 800 , attributeValueClassName NSNumber, defaultValue (null)";
name = "(<NSAttributeDescription: 0x6080006e9180>), name name, isOptional 0, isTransient 0, entity Friend, renamingIdentifier name, validation predicates (\n), warnings (\n), versionHashModifier (null)\n userInfo {\n}, attributeType 700 , attributeValueClassName NSString, defaultValue (null)";
profilePicture = "(<NSAttributeDescription: 0x6080006e9200>), name profilePicture, isOptional 1, isTransient 0, entity Friend, renamingIdentifier profilePicture, validation predicates (\n), warnings (\n), versionHashModifier (null)\n userInfo {\n}, attributeType 700 , attributeValueClassName NSString, defaultValue (null)";
username = "(<NSAttributeDescription: 0x6080006e9280>), name username, isOptional 0, isTransient 0, entity Friend, renamingIdentifier username, validation predicates (\n), warnings (\n), versionHashModifier (null)\n userInfo {\n}, attributeType 700 , attributeValueClassName NSString, defaultValue (null)";
}, subentities {
}, userInfo {
}, versionHashModifier (null), uniquenessConstraints (
)}
這裏是我的容器初始化
container.loadPersistentStores { (_, error) in
if let error = error {
print("Unable to Load Persistent Store")
print("\(error), \(error.localizedDescription)")
} else {
self.setupView()
do {
let acceptedPredicate = NSPredicate(format: "accepted = %@", NSNumber(booleanLiteral: true))
self.fetchedResultsController.fetchRequest.predicate = acceptedPredicate
try self.fetchedResultsController.performFetch()
} catch {
let fetchError = error as NSError
print("Unable to Perform Fetch Request")
print("\(fetchError), \(fetchError.localizedDescription)")
}
self.updateView()
}
}
我應該在哪裏創建一個持久化容器@喬恩 - 玫瑰? 我已經在每個具有函數訪問核心數據的單個視圖控制器中創建容器。 在每個控制器我做,我宣佈它在頂部'''私人設容器= NSPersistentContainer(名稱:「Renungan」)''' –
無論是的appDelegate或sharedSingleton。 –
這樣的'''私人設容器=(UIApplication.shared.delegate作爲!AppDelegate中).persistentContainer'''? –