Strange Down-casted Array 元素无法匹配 Swift 3 中的目标类型问题
Posted
技术标签:
【中文标题】Strange Down-casted Array 元素无法匹配 Swift 3 中的目标类型问题【英文标题】:Strange Down-casted Array element failed to match the target type issue in Swift 3 【发布时间】:2016-12-14 23:08:11 【问题描述】:当我尝试将我的 NSManagedObjects 添加到数组中时,我收到此错误:
Down-casted Array element failed to match the target type
我有这个对象:<NSManagedObject: 0x60800009c390>
并想把它放入这个数组 [Item]
哪里
open class Item: NSManagedObject ...
并尝试通过以下方式执行此操作:
if let items = Item.withPredicate(predicate)
return items as! [Item]
在这里我得到了这个错误。为什么它发生在 Swift 3 上而不发生在 Swift 2 上?
我该如何解决这个问题?
【问题讨论】:
显示更多代码... @JérômeTeisseire 你想看什么?哪个部分? 看来你有一个NSManagedObject
而不是Item
。 Item
继承自 NSManagedObject
,因此您可以将 Item
放入 [NSManagedObject]
但您不能将 NSManagedObject
放入 [Item]
@Paulw11 那么,我该如何解决呢? =/
你能显示allWithPredicate
的代码吗?似乎它正在返回一个[NSManagedObject]
【参考方案1】:
不确定您是如何使用这样的谓词的。 要使用谓词获取实体的数据,请使用 NSFetchRequest :
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
let fetchrequest = NSFetchRequest<NSManagedObject>(entityName: "Item")
let newentity = NSEntityDescription.entity(forEntityName: "Item", in: context)
fetchrequest.entity = newentity
fetchrequest.predicate = NSPredicate(format: "sirname == %@", "Jones")
fetchrequest.returnsObjectsAsFaults = false
do
let results = try context.fetch(fetchrequest) as! [Item]
for result in results
print("result sirname \n \(result.sirname)")
catch let error as NSError
print("error = \(error)")
您收到此错误是因为您可能在 NSEntityDescription.entity(forEntityName: "Item", in: context) 中输入了错误的实体名称
【讨论】:
以上是关于Strange Down-casted Array 元素无法匹配 Swift 3 中的目标类型问题的主要内容,如果未能解决你的问题,请参考以下文章
Codeforces1539 F. Strange Array(思维,线段树)
CodeForces - 1539F Strange Array(线段树区间合并)
Codeforces Round #727 (Div. 2) F. Strange Array(思维,线段树子段和)