首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法共享CKRecord

无法共享CKRecord
EN

Stack Overflow用户
提问于 2017-12-08 04:31:06
回答 0查看 337关注 0票数 0

我写了下面的代码来共享一个CKRecord:

代码语言:javascript
复制
CKRecordZone *restaurantsZone = [[CKRecordZone alloc] initWithZoneName:@"RestaurantsZone"];
CKRecordID *recordID = [[CKRecordID alloc] initWithRecordName:self.recordName zoneID:restaurantsZone.zoneID];
CKRecord *record = [[CKRecord alloc] initWithRecordType:@"Restaurant" recordID:recordID];
[record setValue:self.restaurant forKey:@"name"];

UICloudSharingController *cloudSharingController = [[UICloudSharingController alloc] initWithPreparationHandler:^(UICloudSharingController * _Nonnull controller, void (^ _Nonnull preparationCompletionHandler)(CKShare * _Nullable, CKContainer * _Nullable, NSError * _Nullable)) {
    [self shareRootRecord:record name:self.restaurant completion:preparationCompletionHandler];
}];
cloudSharingController.delegate = self;
[self presentViewController:cloudSharingController animated:YES completion:nil];

shareRootRecord函数:

代码语言:javascript
复制
- (void)shareRootRecord:(CKRecord *)rootRecord name:(NSString *)name completion:(void (^)(CKShare * _Nullable share, CKContainer * _Nullable container, NSError * _Nullable error))completion
{
    CKShare *shareRecord = [[CKShare alloc] initWithRootRecord:rootRecord];
    shareRecord[CKShareTitleKey] = name;
    NSArray *recordsToSave = @[rootRecord, shareRecord];
    CKContainer *container = [CKContainer defaultContainer];
    CKDatabase *privateDatabase = [container sharedCloudDatabase];

    CKModifyRecordsOperation *operation = [[CKModifyRecordsOperation alloc] initWithRecordsToSave:recordsToSave recordIDsToDelete:@[]];
    [operation setPerRecordCompletionBlock:^(CKRecord * _Nullable record, NSError * _Nullable error) {
        if (error) {
            NSLog(@"%@", [error localizedDescription]);
        }
    }];
    [operation setModifyRecordsCompletionBlock:^(NSArray<CKRecord *> * _Nullable savedRecords, NSArray<CKRecordID *> * _Nullable deletedRecordIDs, NSError * _Nullable error) {
        if (error) {
            NSLog(@"%@", [error localizedDescription]);
        }
        completion(shareRecord, container, error);
    }];

    [privateDatabase addOperation:operation];
}

现在,当我运行这段代码时,抛出了以下错误:Only shared zones can be accessed in the shared DB。不过,我似乎找不出原因。有什么想法吗?

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47703266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档