iOS 10中的参数化NSFetchRequest返回<uninitialized>

时间:2016-10-03 11:20:49

标签: swift3 ios10

我正在将我的代码从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>
            }

请提前帮助我。

1 个答案:

答案 0 :(得分:1)

以下代码可以正常工作: let request = NSFetchRequest<NSFetchRequestResult>(entityName:"Your Entity Name")