Cin*_*ing 4 caching nsfetchedresultscontroller swift
标题已经解释了.从nsfetchedresultscontroller删除缓存的swift代码是什么?
这是我得到的错误:
You have illegally mutated the NSFetchedResultsController's fetch request, its predicate, or its sort descriptor without either disabling caching or using +deleteCacheWithName:'
Run Code Online (Sandbox Code Playgroud)
和代码:
if arranged == "naam - A-Z" {
let sortDescriptor = NSSortDescriptor(key: "name", ascending: true)
self.fetchedResultsController.fetchRequest.sortDescriptors = [sortDescriptor]
}else if arranged == "naam - Z-A" {
let sortDescriptor = NSSortDescriptor(key: "name", ascending: false)
self.fetchedResultsController.fetchRequest.sortDescriptors = [sortDescriptor]
}else if arranged == "gemiddelde - 1-10" {
let sortDescriptor = NSSortDescriptor(key: "gemiddelde", ascending: true)
self.fetchedResultsController.fetchRequest.sortDescriptors = [sortDescriptor]
}else if arranged == "gemiddelde - 10-1" {
let sortDescriptor = NSSortDescriptor(key: "gemiddelde", ascending: false)
self.fetchedResultsController.fetchRequest.sortDescriptors = [sortDescriptor]
}
do {
try _fetchedResultsController!.performFetch()
} catch {
// Replace this implementation with code to handle the error appropriately.
// abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
// print("Unresolved error \(error), \(error.userInfo)")
abort()
}
tableView.reloadData()
Run Code Online (Sandbox Code Playgroud)
我需要更多信息,请告诉我.
更新:
我想要这样的东西:
fetchedResultsController.deleteCacheWithName("Master")
Run Code Online (Sandbox Code Playgroud)
但我不知道怎么做.
fetchedResultsController.deleteCacheWithName("Master")
Run Code Online (Sandbox Code Playgroud)
不编译,因为
public class func deleteCacheWithName(name: String?)
Run Code Online (Sandbox Code Playgroud)
是一个类型函数,它必须在类型(类)本身上调用,而不是在实例上调用:
// Swift 2:
NSFetchedResultsController.deleteCacheWithName("Master")
// Swift 3:
NSFetchedResultsController<NSFetchRequestResult>.deleteCache(withName: "Master")
Run Code Online (Sandbox Code Playgroud)
如果使用缓存,则必须在更改任何获取请求,其谓词或其排序描述符之前清除缓存.或者,您可以在不使用缓存的情况下创建获取的结果控制器:
NSFetchedResultsController(..., cacheName: nil)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1705 次 |
| 最近记录: |