我正在将我的代码从swift 2.2迁移到Swift 2.3,而在迁移时我意识到在iOS 10中,NSFetchRequest现在是参数化类型。因此我决定修改我的代码,如下所示,
var fetchRequest : NSFetchRequest<SomeEntity>
if #available(iOS 10.0, *) {
fetchRequest = SomeEntity.fetchRequest() as! NSFetchRequest< SomeEntity>
} else {
fetchRequest = NSFetchRequest(entityName: "SomeEntity")
}
fetchRequest.sortDescriptors = [NSSortDescriptor(key: "name", ascending: true)]
let appdelegate = UIApplication.shared.delegate as! AppDelegate
let SomeEntityArray = try! appdelegate.managedObjectContext.fetch(fetchRequest)
现在,当我运行代码并在fetchRequest初始化上设置断点并打印其描述时,我在执行进一步的代码崩溃时遇到崩溃日志
由于未捕获的异常而终止应用 'NSInvalidArgumentException',原因:'executeFetchRequest:错误: 不是有效的NSFetchRequest。'
删除if条件并保持简单
var fetchRequest : NSFetchRequest<SomeEntity>
fetchRequest = NSFetchRequest(entityName: "SomeEntity")
fetchRequest.sortDescriptors = [NSSortDescriptor(key: "name", ascending: true)]
let appdelegate = UIApplication.shared.delegate as! AppDelegate
let SomeEntityArray = try! appdelegate.managedObjectContext.fetch(fetchRequest)
一切正常!!
的问题是什么
if #available(iOS 10.0, *) {
fetchRequest = SomeEntity.fetchRequest() as! NSFetchRequest< SomeEntity>
}
请提前帮助我。
答案 0 :(得分:1)
以下代码可以正常工作:
let request = NSFetchRequest<NSFetchRequestResult>(entityName:"Your Entity Name")