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/