【问题标题】:Cast a NSPersistentStoreResult to array将 NSPersistentStoreResult 强制转换为数组
【发布时间】:2016-12-01 12:31:48
【问题描述】:

您好,下面的代码有问题。具体来说, if let 语句将来自 NSPeristentStoreResult 的 Cast 提供给无关类型 [Item] 总是失败警告。我正在使用 Swift 3.01。

看起来这应该很简单。我正在关注的这本书是使用早期版本的 Swift 编写的。谢谢你的宽容。

func demo(){

let request = NSFetchRequest<Item>(entityName: "Item")

  do {
     if let items = try CDHelper.shared.context.execute(request) as? [Item] {
        for item in items {
           if let name = item.name {
              print("Fetched Managed Object = '\(name)'")
           }
        }
     }
  } catch {
     print("Error executing a fetch request: \(error)")
  }
 }

【问题讨论】:

标签: ios swift core-data casting swift3


【解决方案1】:

使用fetch() 代替execute()

if let items = try CDHelper.shared.context.fetch(request)
...

或者在你的上下文中使用perform

 CDHelper.shared.context.perform {
      let fetchRequest: NSFetchRequest<Item> = Item.fetchRequest()            
      let items = try! fetchRequest.execute() 
      for item in items {
           if let name = item.name {
                print("Fetched Managed Object = '\(name)'")
           }
      }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-30
    • 1970-01-01
    相关资源
    最近更新 更多