분명히 CloudKit을 사용할 것이므로 정보가 들어있는 기본 데이터 객체를 CKRecord로 정의하는 것이 좋습니다. 그러나, 나는 CKRecord의 클래스를 만드는 방법을 모른다. 특히 "recordType"을 정의하는 방법을 모르겠습니다.CKRecord 클래스를 정의하는 방법
내 특정 질문 : 왜 "self.recordType ="myRecordType "라인이"자기 자신의 recordType에 할당 할 수 없습니까? "라는 오류를 발생 시키는가?이 CKRecord 클래스는 각각 동일한 유형이므로 어떻게해야합니까?
관찰 결과가 있으면 2 차 질문 : CloudKit (읽기 및 쓰기)에서이 클래스의 개체를 쿼리 등에 직접 사용하는 것과 관련된 다른 문제가 있습니까? 유사한 샘플 코드를 어딘가에서 보았습니다. Thx
class testCKRecordClass: CKRecord {
override init!(recordType: String!) {
self.recordType = "myRecordType"
}
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
var title: NSString {
get {
return self.objectForKey("title") as NSString
}
set {
self.setObject(newValue, forKey: "title")
}
}
var location: CLLocation? {
get {
return self.objectForKey("location") as? CLLocation
}
set {
self.setObject(newValue, forKey: "location")
}
}
감사합니다. 당신은 CloudKit에 저장하기 전에 CKRecord를 생성하기 때문에, CKRecord 클래스를 데이터 덩어리의 객체 모델로 사용하고 싶습니다. 어쩌면 github 프로젝트 링크가 비슷한 것을 할 수도 있습니다. 나는 CloudKit으로 다른 작업을 해왔고 가능하다면 기본적으로 편안하게하고 있습니다. – Narwhal
github 프로젝트는 CloudKit에서 반환 할 수있는 메타 데이터 속성의 필드가 들어있는 기본 클래스를 사용합니다. 객체를 CloudKit에 저장하기 전에 CKRecord를 만들고 해당 객체에 대한 리플렉션을 사용하여 모든 필드를 추가합니다. CloudKit에서 읽을 때 동일한 트릭을 수행하지만 그 반대의 경우를 수행합니다. 이렇게하면 야구에 대한 참조 만 추가하면되므로 추가 코딩이 필요하지 않습니다. –
나는 그것을 가지고 놀 것입니다. 고맙습니다 – Narwhal