Xcode 提取请求模板不能与NSFetchedResultController一起使用吗?
此代码位于my Entity+CoreDataProperties.swift文件中:Xcode 提取请求模板不能与NSFetchedResultController一起使用吗?,xcode,core-data,swift3,nsfetchedresultscontroller,Xcode,Core Data,Swift3,Nsfetchedresultscontroller,此代码位于my Entity+CoreDataProperties.swift文件中: @nonobjc public class func mFetchRequest() -> NSFetchRequest<Entity> { return (getContext().persistentStoreCoordinator?.managedObjectModel.fetchRequestTemplate(forName: "MEntityRequest"))! as!
@nonobjc public class func mFetchRequest() -> NSFetchRequest<Entity> {
return (getContext().persistentStoreCoordinator?.managedObjectModel.fetchRequestTemplate(forName: "MEntityRequest"))! as! NSFetchRequest<Entity>
}
@nonobjc公共类func mFetchRequest()->NSFetchRequest{
返回(getContext().persistentStoreCoordinator?.managedObjectModel.fetchRequestTemplate(forName:“MEntityRequest”)!as!NSFetchRequest
}
在我的NSFetchedResultsControllerDelegate扩展代码中,我这样调用此函数:
var fetchedResultsController: NSFetchedResultsController<Entity> {
if _fetchedResultsController != nil {
return _fetchedResultsController!
}
let fetchRequest: NSFetchRequest<Entity> = Entity.mFetchRequest()
// Edit the sort key as appropriate.
let sortDescriptor = NSSortDescriptor(key: "name", ascending: true)
fetchRequest.sortDescriptors = [sortDescriptor]
let aFetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: self.managedObjectContext!, sectionNameKeyPath: nil, cacheName: "Master")
aFetchedResultsController.delegate = self
_fetchedResultsController = aFetchedResultsController
do {
try _fetchedResultsController!.performFetch()
} catch let error as NSError{
print("Unresolved Fetch Error \(error), \(error.userInfo)")
}
return _fetchedResultsController!
}
var fetchedResultsController:NSFetchedResultsController{
如果_fetchedResultsController!=nil{
return\u fetchedResultsController!
}
let fetchRequest:NSFetchRequest=Entity.mFetchRequest()
//根据需要编辑排序键。
让sortDescriptor=NSSortDescriptor(键:“名称”,升序:true)
fetchRequest.sortDescriptors=[sortDescriptor]
设aFetchedResultsController=NSFetchedResultsController(fetchRequest:fetchRequest,managedObjectContext:self.managedObjectContext!,sectionNameKeyPath:nil,cacheName:“Master”)
aFetchedResultsController.delegate=self
_fetchedResultsController=aFetchedResultsController
做{
请尝试_fetchedResultsController!.performFetch()
}将let错误捕获为NSError{
打印(“未解决的获取错误\(错误),\(错误.userInfo)”)
}
return\u fetchedResultsController!
}
通过在获取请求上设置sortDescriptors,我得到了错误:“NSInternalInconsistencyException”,原因是:“无法修改不可变模型中的命名获取请求。”
当我未设置SortDescriptor:“NSInvalidArgumentException”时,原因是:“NSFetchedResultsController的实例需要具有排序描述符的获取请求”
我做得不对的是什么?NSFetchResultsController是否可以不使用提取请求模板?使用
fetchRequestFromTemplate
而不是fetchRequestTemplate
。我将尝试一下,然后查看