2016-12-29 4 views
0

Realm (포드를 사용하여 설치)를 시도하고 있습니다. Xcode 8.1에서 Swift 3을 사용하고 있습니다.렐름을 사용하는 동안 KVC로 값을 얻지 만 속성을 사용하지 않는 이유는 무엇입니까?

내 코드 this-

do { 
     let realm = try Realm() 
     let human = Human() 
     human.name = "Nikhil" 
     human.legs = 2 

     try realm.write { 
      realm.add(human) 
     } 

     let humans = realm.objects(Human.self) 
     for h in humans { 
      print("\(h.name)") //Here is breakpoint 
     } 
    } catch { 
     // 
    } 

처럼 보인다 그리고 나는

(lldb) po h.name 
"" 


(lldb) po h.value(forKey: "name")! 
Nikhil 

왜 속성을 반환하지 않는 값을하지만 value(forKey:에 의해 값을 검색 할 수 있습니까?

클래스 속성이 dynamic로 정의되어 있어야합니다 - @kishikawa 카츠미에서 언급 한 바와 같이

+0

LLDB는 영역 모델에서 'po'속성을 직접 사용할 수 있어야합니다. 최소한 Xcode 8.2와 Realm은 CocoaPod를 사용하여 설치되었습니다. 파생 된 데이터를 지우고 빌드 폴더를 청소해볼 수 있습니까 (Option 키 + 제품 메뉴, 그런 다음'Clean Build Folder ... ')? 어쩌면 디버거가 제대로 작동하지 않게하는 일종의 캐시 된 데이터가있을 수 있습니다. – AustinZ

+1

아마도 모델의 속성이 '동적'으로 선언되지 않았기 때문일 수 있습니다. 'dynamic' 속성이 없으면 Swift 속성 접근은 정적 디스패치가됩니다. Realm은 모든 값을 지연로드하기 때문에 동적 디스 패칭이 필요합니다. 우리의 모델 정의 cheatsheet를보십시오 https://realm.io/docs/swift/latest/#cheatsheet –

+0

@kishikawakatsumi 당신 말이 맞았습니다. 감사 :) –

답변

0

.

실수를 지적 해 주신 데 대해 감사 드리며.