2015-01-22 2 views
0

У меня возникли проблемы с реализацией именно того, почему я получаю сообщение об ошибке, указанное в заголовке вопроса при попытке реализовать индикатор выполнения на моем блоке.Swift: Дополнительный аргумент «progressblock» при вызове

func uploadImage(imageData: NSData!) { 

    let imageFile = PFFile(name: "\(PFUser.currentUser().username)'s Avatar", data: imageData) 

    // Show the HUD to prompt user of upload 
    hud = MBProgressHUD.showHUDAddedTo(self.view, animated: true) 
    hud.mode = MBProgressHUDModeDeterminateHorizontalBar 
    hud.labelText = "Changing Image..." 

    // Upload the image 
    imageFile.saveInBackgroundWithBlock({ (succeeded: Bool, error: NSError!) -> Void in 

     // Check there was no error, begin handling the file upload 
     // trimmed out un-necessary code 

     }, progressBlock: { (amountDone: Int32) -> Void in 
      self.hud.progress = amountDone/100 as Float 
    }) 
} 

Если удалить строку self.hud.progress = amountDone/100 as Float все работает, как я ожидал, но положить что-нибудь в progressBlock вызывает мое приложение к сбою.

Я следую за Parse tutorial for uploading images, разница только в том, что я работаю с Swift, поэтому мне нужно преобразовать из Objective-C, однако я не понимаю, почему это сильно изменило бы синтаксис для построения второго блок.

ответ

1

Это вопрос литья.

Вы должны бросить amountDone переменную для Float или CGFloat от Int32.

var flotAmount = Float(amountDone) 

Проверить тип self.hud.progress если Float чем использовать

self.hud.progress = Float(flotAmount/100) 

А если CGFloat используйте ниже линии:

self.hud.progress = CGFloat(flotAmount/100) 
+0

Вы совершенно правы, я думал, что 'в Float' будет делать то же самое с моим выражением - мой плохой ... спасибо Kampai – Alex

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