Xcode 8でSwift 3.0を使用してCore Dataのテストプログラムを作成しています。このようにNSManagedObjectからデータを受け取ろうとしたときに問題が発生します:Swift 3タイプ 'Any'のメンバーに 'valueForKey'というメンバーがありません
エラーValue of type 'Any' has no member 'valueForKey'
が付い
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 {
そこで質問から取得する方法ですtype任意のレコードデータ? P.P.それはANYOBJECT型にキャストすることなく、可能であるならば、それはまた、エラーが発生しました。この
if let a = (i as AnyObject).value("b") as? String {
につながっているので:
Cannot invoke 'value' with an argument list of type '(String)'
そして、私は適切な方法でそれをやってみたいです。 ありがとうございました!
UPDATEは、私は解決策(ヴァディアンのおかげで)見つけましたが、私はそれが正しいものである疑い:私はまだこれを行うための正しい方法を探しています
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 {
}
。
いいえ、それはまたエラーです: – Alex
タイプ 'Any'には添え字メンバーがありません – Alex
これはどこですか? fetch(request)as [String:AnyObject] – Alex