Сохранение PromiseKit и CloudKit (с использованием Swift)

Я новичок в PromiseKit, и я немного смущен тем, как обрабатывать несколько промисов. Я использую CloudKit и сохраняю две записи, и когда они обе сохраняются, я хочу сделать что-то по завершении и что-то еще по ошибке. Я думал, что должен сделать следующее, но Xcode жалуется, поэтому очевидно, что я неправильно понял:

let savePromise1 : PMKPromise = db.saveRecord(record1)
let savePromise2 : PMKPromise = db.saveRecord(record2)

PMKPromise.when([ savePromise1, savePromise2 ]).then() { results in
    // handle success or errors
}

Я получаю сообщение об ошибке: «Невозможно преобразовать тип experssion» (($ T8) -> ($ T8) -> $ T7) -> (($ T8) -> ($ T7) -> $ T7» в тип «PMKPromise». '

Я действительно не понимаю, что означает ошибка, но я ожидал, что «результаты» будут массивом кортежей (результат, ошибка).

Как мне вместо этого написать выражение «когда»?

Ваше здоровье

Ник


person niklassaers    schedule 12.09.2014    source источник
comment
Вы используете версию PromiseKit для Swift или Objective-C?   -  person Michael Gaylord    schedule 18.09.2014
comment
Я использовал Pod, поэтому версия ObjC. В версии Swift не было классов CloudKit. С тех пор я слышал от разработчика, что эта проблема еще не решена, но он над ней работает. Так что пока решения нет, но надеюсь скоро. :-) Тем не менее, мне бы хотелось узнать, как читать этот тип выражения :-)   -  person niklassaers    schedule 19.09.2014


Ответы (1)


Используйте версию PromiseKit для Swift, теперь она поддерживает CloudKit:

when(db.save(record1), db.save(record2)).then { (record1, record2)->Void in

}

Версия Swift также имеет кортеж-когда, поэтому вам не нужно сортировать массив результатов.

person mxcl    schedule 04.12.2014
comment
Потрясающий! :-) Спасибо! :-) - person niklassaers; 04.12.2014