2014-09-12 5 views
2

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

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»

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

Как я должен написать мой «когда» заявление вместо этого?

Приветствия

Nik

+0

Используете ли вы версию Swift или версию Objective-C PromiseKit? –

+0

Я использовал Pod, поэтому версия ObjC. В версии Swift не было классов CloudKit. С тех пор я уже слышал от разработчика, что эта проблема еще не решена, но он работает над этим. Так что пока нет решения, но, надеюсь, скоро. :-) Мне все равно понравился ввод данных о том, как читать этот тип выражения, хотя :-) – niklassaers

ответ

1

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

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

} 

Свифт версия также имеет кортеж-когда, так что вам не придется перебирать массив Результаты.

+0

Awesome! :-) Благодаря! :-) – niklassaers