Swift 错误数据未使用核心数据保存
大家好,我正在尝试使用文本字段中的核心数据保存数据,然后点击保存按钮 起初它没有保存,但现在当我保存时,我得到一个错误,上面写着: 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“NSFetchedResultsController的实例需要具有排序描述符的获取请求” 我希望你们能帮忙Swift 错误数据未使用核心数据保存,swift,xcode,core-data,Swift,Xcode,Core Data,大家好,我正在尝试使用文本字段中的核心数据保存数据,然后点击保存按钮 起初它没有保存,但现在当我保存时,我得到一个错误,上面写着: 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“NSFetchedResultsController的实例需要具有排序描述符的获取请求” 我希望你们能帮忙 var controller: NSFetchedResultsController<TextInputs>! override func viewD
var controller: NSFetchedResultsController<TextInputs>!
override func viewDidLoad() {
super.viewDidLoad()
controller.delegate = self
如果您将排序描述符添加到提取请求中会发生什么情况?您好,我没有排序描述符,我是Swift新手,编程经验只有7个月左右,对不起。我遵循了我的教程中的示例,它们没有在中添加描述符。您是否只需要获取
NSManagedObjects
?我看不到您在任何地方实际使用了NSFetchedResultsController
,我错了吗?如果您不使用它,并且不需要对结果进行排序,那么您不必让它在CoreData中进行提取错误消息非常清楚:…需要具有排序描述符的提取请求。如果您不熟悉Swift create new project with Core Data复选框,请阅读Apple如何创建NSFetchedResultsController
实例。如果总是创建DataController()
的新独立实例,您也会遇到问题。嗨,Pierce,我已经更改了我的代码函数我复制了另一个函数现在我选择了正确的,我在教程中尝试了两种方法。但是我得到了同样的错误
func attemptFetch() {
let fetchRequest: NSFetchRequest<TextInputs> = TextInputs.fetchRequest()
let controller = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: DataController().managedObjectContext, sectionNameKeyPath: nil, cacheName: nil)
self.controller = controller
do {
try controller.performFetch()
} catch {
let error = error as NSError
print("\(error)")
}
}
@IBAction func savePressed(_ sender: Any) {
attemptFetch()
let textInputs = TextInputs(context: DataController().managedObjectContext)
if let page22Text = TextInputBox.text {
textInputs.page22 = page22Text
do {
try DataController().managedObjectContext.save()
} catch {
fatalError("Failure to save context: \(error)")
}