我正在用Xcode 8中的Swift 3.0编写一个核心数据测试程序。问题是,当我尝试从NSManagedObject接收任何数据时,如下所示:
let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Entity")
request.returnsObjectsAsFaults = false
do {
let entityTableInCoreData = try newPrivateQueueContext.fetch(request)
for i in entityTableInCoreData {
if let a = i.valueForKey("b") as? String {
print(a)
}
}
} catch {
}
线路
if let a = i.valueForKey("b") as? String {
标记为错误
“Any”类型的值没有成员“valueForKey”
如果可能,请注意,不要强制转换为AnyObject类型,因为这会导致
if let a = (i as AnyObject).value("b") as? String {
也有错误:
无法使用“(String)”类型的参数列表调用“value”
我想以正确的方式来做。
非常感谢。
更新
do {
let entityTableInCoreData = try newPrivateQueueContext.fetch(request)
for i in entityTableInCoreData {
print("Record")
//print(i)
if let a = i as? NSManagedObject {
print("a: \(a.value(forKey: "a"))")
}
}
} catch {
}
我仍在寻找一种正确的方法来做到这一点。