CloudKit 记录保存进度
Posted
技术标签:
【中文标题】CloudKit 记录保存进度【英文标题】:CloudKit records saving progress 【发布时间】:2014-12-03 08:09:48 【问题描述】:我想保存事件和图像(用于事件)记录。我想在 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)
我该怎么办?
【问题讨论】:
嘿AlKozin!您是否设法找到使用 CloudKit 顺利(更好)进展的解决方案? @drdrdrdr 不幸的是,没有。我的解决方案是根据操作的值大致显示进度,但不将进度更改为操作的确切值。 【参考方案1】:CKModifyRecordOperation
的文档指出:
操作对象为 recordsToSave 属性中的每条记录执行此块零次或多次。
因此,如果对象的保存操作花费的时间很短,那么您可能不会收到进度回调。据我所知,没有办法影响进度通知的频率。
【讨论】:
好的,这在wifi上没问题。边缘节省需要很多时间,但无论如何我只看到三个进度回调:慢速连接和快速连接。 也许这是一个错误?我在操作开始、中间和结束时收到回调这一事实没有任何好处。以上是关于CloudKit 记录保存进度的主要内容,如果未能解决你的问题,请参考以下文章