从“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]”总是失败的主要内容,如果未能解决你的问题,请参考以下文章