保存附加了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];