Xcode 8에서 Swift 3.0을 사용하여 테스트 프로그램을 작성하고 있습니다. 문제는 NSManagedObject에서 다음과 같이 데이터를 받으려고 할 때입니다.Swift 3 'Any'에 '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 {
Value of type 'Any' has no member 'valueForKey'
그래서 질문에서 얻을하는 방법은 오류 표시 type 단일 레코드 데이터? 오후 8시 30 분 P.S. 이 AnyObject 유형으로 변환하지 않고, 가능하다면 그것은 또한 오류가이
if let a = (i as AnyObject).value("b") as? String {
을 선도하고 있기 때문에 :
Cannot invoke 'value' with an argument list of type '(String)'
그리고 적절한 방법으로 그것을하고 싶어. 감사합니다.
UPDATE가 나는 해결책 (Vadian 덕분에) 발견,하지만 난 그게 바로 하나입니다 의심 : 나는 아직도이 할 수있는 올바른 방법을 찾고 있어요
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