2014-12-03 4 views
1

Я хочу сохранить записи событий и изображений (для событий). Я хочу показать загрузку прогресса в пользовательском интерфейсе. Событие - маленький объект с текстом и местоположением. Изображение - большой объект с фотографией как UIImage.Сохранение результатов CloudKit

Запись изображения - первый элемент в массиве, событие - второе.

создать 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) 

Что я должен делать?

+0

Hey AlKozin! Удалось ли вам найти решение для плавного (er) прогресса с помощью CloudKit? – drdrdrdr

+1

@drdrdrdr К сожалению, нет. Мое решение состоит в том, чтобы приблизительно показать прогресс по значению от операции, но не изменить ход до точных значений из операции. – AlKozin

ответ

1

В документации для CKModifyRecordOperation указывается: Объект операции выполняет этот блок в ноль или более раз для каждой записи в свойстве recordsToSave.

Так что если действие сохранения для объекта занимает мало времени, то может случиться так, что вы не получите обратный вызов прогресса. Насколько я знаю, нет возможности влиять на частоту уведомлений о прогрессе.

+0

Хорошо, это не проблема на Wi-Fi. При сохранении края требуется много времени, но в любом случае я вижу только три обратных вызова прогресса: при медленном соединении и при быстром подключении. – AlKozin

+0

Возможно, это ошибка? Нет никакой пользы от того, что я получаю обратные вызовы в начале операции, посередине и в конце. – AlKozin

Смежные вопросы