从“NSPersistentStoreResult”转换为不相关类型“[entity]”总是失败

Posted

技术标签:

【中文标题】从“NSPersistentStoreResult”转换为不相关类型“[entity]”总是失败【英文标题】:Cast from 'NSPersistentStoreResult' to unrelated type '[entity]' always fails 【发布时间】:2016-08-06 08:41:23 【问题描述】:

我在我的应用程序中使用 Core Data。我在从 coredata 取回结果时遇到了麻烦。我的实体名称是 Wonders。

现在我成功地保存了一条记录。现在,当我取回它时,我正在使用以下代码。

override func viewWillAppear(animated: Bool) 
    let wondersAppdel:AppDelegate=UIApplication.sharedApplication().delegate as!AppDelegate
    let WondersContext:NSManagedObjectContext = wondersAppdel.managedObjectContext
    let wondersFetchRequest = NSFetchRequest(entityName: "Wonders")
    wondersFetchRequest.predicate=NSPredicate(format: "wonderShow = %@", true)
    let sortDescriptor = NSSortDescriptor(key: "wonderName", ascending: true)
    wondersFetchRequest.sortDescriptors=[sortDescriptor]



    do 
        if
            let wonderFetchresults = try WondersContext.executeRequest(wondersFetchRequest) as? [Wonders]
        wonders = wonderFetchresults
        
        elseprint("else if result...try")
    
    catch
        fatalError("there was an error fatching the list of gruops!")
        self.tableview.reloadData()
    

【问题讨论】:

【参考方案1】:

从 Swift 3.0 开始,您可以在自定义 NSManagedObject 子类上利用自动生成的 fetchRequest() 函数:

let request: NSFetchRequest<Wonders> = Wonders.fetchRequest()
let allWonders = try WondersContext.fetch(request)

...并且不再需要转换结果,因为它会自动将数组转换返回到相关类(或更准确地说,相关类的可选数组)。谓词和排序描述符可以根据需要以通常的方式添加,甚至可以直接编程到相关对象的自动生成的fetchRequest() 函数中,如果您应该使用默认值的话。

【讨论】:

【参考方案2】:

当你执行 NSFetchRequest 时,你应该调用 NSManagedObjectContext 的 executeFetchRequest 方法。

try WondersContext.executeFetchRequest(wondersFetchRequest)

【讨论】:

兄弟,我可以让你加入社交网络吗?我有兴趣与你熟悉并成为朋友 我的推特账号是@ahmedonawale

以上是关于从“NSPersistentStoreResult”转换为不相关类型“[entity]”总是失败的主要内容,如果未能解决你的问题,请参考以下文章

从 NIB 与从代码加载自定义滑块:从代码加载时不存在子视图

如何从其他面板从 JTextField 获取输入

从PRISM开始学WPFMVVMViewModel?

在 python 中,为啥从数组读取比从列表读取慢?

从图库中挑选或从相机捕获的高质量图像

从PRISM开始学WPFMVVMCommand?