CoreData '此 NSPersistentStoreCoordinator 没有持久存储。它无法执行保存操作。

ios

1个回答

写回答

AI
AI

在使用CoreData进行数据持久化的过程中,有时候我们会遇到类似于"此 NSPersistentStoreCoordinator 没有持久存储。它无法执行保存操作。"这样的错误提示。这个错误提示意味着我们的代码中缺少了一个持久存储的设置,导致无法进行数据的保存操作。那么接下来,我们将通过一个案例来说明如何解决这个问题。

假设我们正在开发一个日记应用,用户可以创建和保存自己的日记。我们使用CoreData来管理用户的日记数据。我们已经创建了一个实体类"Diary"来表示日记,其中包含了标题和内容两个属性。接下来,我们将展示如何使用CoreData来进行数据的保存操作。

首先,我们需要创建一个NSPersistentContAIner对象来管理CoreData的栈。我们可以在AppDelegate中进行如下设置:

Swift

import CoreData

class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow?

lazy var persistentContAIner: NSPersistentContAIner = {

let contAIner = NSPersistentContAIner(name: "DiaryApp")

contAIner.loadPersistentStores(completionHandler: { (storeDescription, error) in

if let error = error as NSError? {

print("Unresolved error \(error), \(error.userInfo)")

}

})

return contAIner

}()

// ...

}

在上述代码中,我们创建了一个名为"DiaryApp"的NSPersistentContAIner对象,并加载了持久存储。如果加载过程中出现错误,我们将打印出错误信息。

接下来,我们可以在适当的地方创建和保存日记。例如,当用户点击保存按钮时,我们可以调用以下代码来保存用户的日记:

Swift

import CoreData

class DiaryViewController: UIViewController {

// ...

@IBAction func saveButtonTapped(_ sender: UIButton) {

guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {

return

}

let managedContext = appDelegate.persistentContAIner.viewContext

guard let entity = NSEntityDescription.entity(forEntityName: "Diary", in: managedContext) else {

return

}

let diary = NSManagedObject(entity: entity, insertInto: managedContext)

diary.setValue(titleTextField.text, forKey: "title")

diary.setValue(contentTextView.text, forKey: "content")

do {

try managedContext.save()

print("Diary saved successfully.")

} catch let error as NSError {

print("Could not save. \(error), \(error.userInfo)")

}

}

// ...

}

在上述代码中,我们首先获取到AppDelegate对象,并从中获取到NSPersistentContAIner对象。然后,我们获取到NSManagedObjectContext对象,它是CoreData中的核心对象,用于进行数据的插入、更新和删除操作。

接下来,我们创建一个Diary对象,并设置其属性值。最后,我们调用managedContext的save()方法来保存数据。如果保存过程中出现错误,我们将打印出错误信息。

通过上述代码,我们可以解决"此 NSPersistentStoreCoordinator 没有持久存储。它无法执行保存操作。"的错误,并成功地保存用户的日记数据。在实际开发中,我们可以根据具体的需求对代码进行进一步的优化和封装,以提高代码的可维护性和可扩展性。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号