CloudKit记录保存进度

时间:2014-12-03 08:09:48

标签: ios xcode cloudkit

我想保存事件和图像(用于事件)记录。我想在UI中显示上传进度。 事件是文本和位置的小对象。 图像是UIImage照片的大对象。

图像记录是数组中的第一项,事件是第二项。

我创建CKModifyRecordsOperation并将两个CKRecord对象设置为recordsToSave

比我设置perRecordProgressBlock

[operation setPerRecordProgressBlock:^(CKRecord *record, double progress) {
    NSLog(@"#record: %@ progress: %f", record.recordType, progress);
}];

perRecordCompletionBlock

[operation setPerRecordCompletionBlock:^(CKRecord *record, NSError *error) {
    NSLog(@"#recordSaved: %@ e: %@", record.recordType, error);
}];

我希望看到很多行有两个记录的进度,如:

#record: ImageRecord progress: 0.050000
#record: ImageRecord progress: 0.100000
#record: ImageRecord progress: 0.150000
             ...
#record: ImageRecord progress: 1.000000
#recordSaved: ImageRecord e: (null)
#record: EventRecord progress: 0.050000
             ...
#record: EventRecord progress: 1.000000
#recordSaved: EventRecord e: (null)

但是真的在控制台输出中我看到了:

#record: ImageRecord progress: 0.000000
#record: ImageRecord progress: 0.447357
#record: ImageRecord progress: 1.000000
#record: ImageRecord progress: 1.000000
#recordSaved: Event e: (null)
#recordSaved: ImageRecord e: (null)

我该怎么办?

1 个答案:

答案 0 :(得分:1)

CKModifyRecordOperation州的文档: 对于recordsToSave属性中的每个记录,操作对象对该块执行零次或多次。

因此,如果对象的保存操作花费的时间很少,那么可能会发生无法获得进度回调的情况。据我所知,没有办法影响进度通知的频率。