내 사용자 record ID
을 설정하여 레코드를 만들 때 CKRecordID
을 만들 때마다 오류가 계속 발생하기 때문에 분명히 오류를 표시 할 수 없습니다. 각 사용자의 고유 한 recordID
을 레코드 이름으로 사용할 수 없으면 먼저 이름을 설정하는 것이 무엇입니까? 또한 데이터를 가져올 때 사용자를 어떻게 구별합니까?CKRecordID를 생성 할 때 사용자 레코드 ID를 사용하여 레코드 이름을 할당 할 수 있습니까?
CKRecordID *artworkRecordID = [[CKRecordID alloc] initWithRecordName:RANDOM_UNIQUE_NUMBER];
CKRecord *artworkRecord = [[CKRecord alloc] initWithRecordType:@"person" recordID:recordID];
artworkRecord[@"language"] = @"English";
CKContainer *myContainer = [CKContainer defaultContainer];
CKDatabase *privateDatabase = [myContainer privateCloudDatabase];
[privateDatabase saveRecord:artworkRecord completionHandler:^(CKRecord *artworkRecord, NSError *error){
if (!error) {
NSLog(@"Success!");
}
else {
NSLog(@"Failure!");
}
}];
편집
나는 그것을 밖으로 근무했습니다. 그래서 데이터를 저장/추가 할 때 자신의 사용자 레코드 ID를 사용하여 PRIVATE DATA로부터 자신 만의 데이터를 얻을 수 있으므로 레코드 이름은 전혀 중요하지 않으므로 @ "무엇이든"으로 설정할 수 있습니다. 전혀 문제가되지 않는다.
아직 몇 가지 사항을 이해하지 못합니다.
데이터를 가져 오기 위해 개인 데이터를 사용하지 않을 때 개인 데이터의 레코드 이름을 설정해야하는 이유는 무엇입니까?
-(void)fetchRecord {
CKDatabase *privateDatabase = [[CKContainer defaultContainer] privateCloudDatabase];
CKReference *reference = [[CKReference alloc] initWithRecordID:self.cloudRecordID action:CKReferenceActionNone];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"creatorUserRecordID = %@", reference];
CKQuery *query = [[CKQuery alloc] initWithRecordType:@"person" predicate:predicate];
[privateDatabase performQuery:query inZoneWithID:nil completionHandler:^(NSArray *results, NSError *error) {
if (error) {
NSLog(@"error: %@",error.localizedDescription);
}
else {
if (![results firstObject]) {
}
else {
for (CKRecord *record in results) {
NSLog(@"%@",[record objectForKey:@"language"]);
}
}
}
}];}
아, 사실 개인 데이터로 저장하고 있습니다. 따라서 공공 장소가 아닌 개인 사무실에서 일할 때 올바른 사용자인지 여부를 확인할 필요가 없습니다. CloudKit에 관한 Apple의 문서를 읽었지만 그 문제에 대해서는 언급하지 않았습니다. 또한, 심지어는 아무 문제가 없기 때문에 임의로 생성 된 문자열을 레코드 이름으로 지정해야합니다. – durazno
문서에서 : "데이터베이스 액세스는 기본적으로 해당 iCloud 계정의 사용자로 제한됩니다. 현재 사용자는 개인 데이터베이스의 모든 컨텐츠를 소유하며 해당 내용을 읽고 쓸 수 있습니다. 개인 데이터베이스의 데이터는 표시되지 않습니다. 개발자 포털 또는 다른 사용자에게. " https://developer.apple.com/library/ios/documentation/CloudKit/Reference/CKContainer_class/index.html#//apple_ref/occ/instp/CKContainer/privateCloudDatabase –
글쎄, 그래서 당신이 말하는 것은 개인 날짜에 대해서는 고유 레코드 이름은 무의미하지만 여전히 데이터를 가져 오는 데는 어떤 데이터가 어떤 사용자인지 식별해야합니다. 그렇다면 자신의 사용자 만 액세스 할 수있는 개인 데이터의 모든 부분은 도움이되지 않습니다. 각 사용자에 대해 가져올 데이터를 찾으려면 고유 한 레코드 이름을 설정해야합니다. – durazno