ios - 从 [Message] 到 [Message] 的条件转换总是成功

标签 ios swift xcode message

if let context = delegate?.managedObjectContext {


        do {

      let fetchRequest = NSFetchRequest<Message>(entityName: "Message")

          let messages = try(context.fetch(fetchRequest) as? [Message])

This gives me the error "conditional cast from [Message] to [Message] always succeeds"

            for message in messages! {
                context.delete(message)

            }
            try(context.save())

        } catch let err {
            print (err)
        }

Can someone help me understand what I'm doing wrong?

最佳答案

在 swift 3 之前,context.fetch() 只返回一个 [AnyObject]。这就是为什么你必须那样投它。

但现在在 Swift 3 中,NSFetchRequest 类变成了泛型,context.fetch() 将返回您在创建获取请求时指定的泛型类型的数组。现在类型安全得多。

因此,您不再需要将其转换为您想要的类型,因为它已经是该类型了!

let messages = try context.fetch(fetchRequest)

关于ios - 从 [Message] 到 [Message] 的条件转换总是成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40341017/

相关文章:

ios - 如何使用应用内自定义键盘的按钮输入文本

ios - objective-C : No Matter what I do CIDetector is always nil

ios - 我自己类(class)内的 NotificationCenter

xcode - 如何更新子模块?

ios - Xcode Analyzer 警告 - 字典值不能为 nil

ios - UITextField 键盘国际化?

ios - 不同节点上多个 SKAction 的完成 block

iOS 11 UITableView 错误

ios - 如何在 swift 中从 firebase 中删除子记录?

ios - 找不到 -lRCTGeolocation 的库