我在Xcode 8.0上使用SWIFT 3.0 我试图循环通过模板创建的获取结果。
let request = model.fetchRequestTemplate(forName: "template")
do {
let result = try context.fetch(request!) // Error on this line
for item: EntityClassName in result! {
...
}
} catch {
...
}
我收到错误"模糊地使用' fetch'"。我的方法有误吗?如果是这样,循环获取结果的正确方法是什么?
答案 0 :(得分:2)
您使用的方法fetch
会返回[Any]
,因为它可能是[Dictionary]
或[NSManagedObject]
或其子类之一。
您必须将[Any]
转换为正确的类型
let result = try context.fetch(request!) as! [EntityClassName]
for item in result {
...
}
强制解包是绝对安全的,因为根据获取请求,它始终返回[EntityClassName]
。
或者,您可以将新API与泛型一起使用,这可以避免某些类型转换。
答案 1 :(得分:0)
let fetchRequest: NSFetchRequest<EntityClassName> = model.fetchRequestTemplate(forName: "template")
do {
let result = try context.fetch(fetchRequest)
for item in result {
...
}
} catch {
...
}