CloudKit / CKAsset上传进度

时间:2015-08-22 19:58:30

标签: ios user-interface cloudkit

保存附加了CKAsset的CKRecord(文件大小> 500Kb)时,我想向用户提供进度信息。有可靠的方法吗?

虽然CKModifyRecordsOperation具有perRecordProgressBlock属性,但它将被调用" ...零次或多次......"根据文件。在添加此操作后的测试中,几秒钟后,进度立即跳转到0.99然后以1.0进度值结束 - 这对用户没用。

我也尝试了NSProgress但是或多或少地获得了相同的令人失望的结果。

代码很简单,上传一般运行正常,但我想在上传时间超过几秒的情况下向用户提供更多反馈。

CKRecordID *recordID = [[CKRecordID alloc] initWithRecordName:self.name];
self.record = [[CKRecord alloc] initWithRecordType:@"burst" recordID:recordID];
self.record[@"image"] = [[CKAsset alloc] initWithFileURL:self.url];

CKModifyRecordsOperation *operation = [[CKModifyRecordsOperation alloc] initWithRecordsToSave:@[self.record] recordIDsToDelete:nil];
operation.database = [CKContainer defaultContainer].publicCloudDatabase;
operation.usesBackgroundSession = NO;
operation.perRecordProgressBlock = ^(CKRecord *record, double progress) {
    NSLog(@"progress %f", progress);
};
operation.perRecordCompletionBlock = ^(CKRecord *record, NSError *error) {
    if (!error) {
        NSLog(@"OK");
    }
    else {
        NSLog(@"error %@", error.localizedDescription);
    }
};

[[CKContainer defaultContainer].publicCloudDatabase addOperation:operation];

0 个答案:

没有答案