2015-04-15 2 views
0

Следующий код, который я получил от parse.com сайт не работает:saveInBackgroundWithBlock с прогрессом не работает в Swift под Xcode 6,3

let str = "Working at Parse is great!" 
let data = str.dataUsingEncoding(NSUTF8StringEncoding) 
let file = PFFile(name:"resume.txt", data:data) 
file.saveInBackgroundWithBlock { 
    (succeeded: Bool!, error: NSError!) -> Void in 
    // Handle success or failure here ... 
}, progressBlock: { 
    (percentDone: Int) -> Void in 
    // Update your progress spinner here. percentDone will be between 0 and 100. 
} 

Сообщение об ошибке:

Cannot invoke 'saveInBackgroundWithBlock' with an argument list of type '((Bool, NSError?) -> Void?, progressBlock: (Int) -> Void?)'

I попробовал другую комбинацию, но никто не работает. Есть идеи? Благодаря

+0

Поскольку PFFile хочет 2 закрывающие блоки, вещи немного по-другому. См. Этот ответ, хотя, как я думаю, он отвечает на ваш вопрос: http://stackoverflow.com/questions/24548837/swift-2-consecutive-closures-blocks – BHendricks

ответ

2

В IOS 8.3 Следующий фрагмент кода работает:

let str = "Working at Parse is great!" 
    let data = str.dataUsingEncoding(NSUTF8StringEncoding) 
    let file = PFFile(name:"resume.txt", data:data!) 

    file.saveInBackgroundWithBlock({ (succeeded: Bool, error: NSError?) -> Void in 
     // Handle success or failure here ... 
     if succeeded { 
      println("Save successful") 
     } else { 
      println("Save unsuccessful: \(error?.userInfo)") 
     } 

     }, progressBlock: { (percentDone: Int32) -> Void in 
     // Update your progress spinner here. percentDone will be between 0 and 100. 
    }) 

Позвольте мне знать, если это работает для вас.

+1

Все еще получил ошибку компиляции: ViewController.swift: 30: 23: Невозможно вызвать «saveInBackgroundWithBlock» с помощью списка аргументов типа «((Bool, NSError?) -> Void, progressBlock: (Int32) -> Void) ' –

+0

Вот рабочий код в модифицированном проекте ParseSwiftStarter для Xcode 6.3: https: //bitbucket.org/jonathanburris/parseswiftstarterproject – mrbcg

0

У меня была такая же проблема, и способ mrbcg работал для меня.

Чтобы показать прогресс: добавьте и подключите IBOutlet в раскадровке @IBOutlet weak var UploadProgressView: UIProgressView.

Затем отредактируйте следующее:

progressBlock: { (percentDone: Int32) -> Void in 
      // Update your progress spinner here. percentDone will be between 0 and 100. 
      let percentProgress = Float(percentDone)/100.0 
      let animated = percentProgress != 0 
      self.UploadProgressView.setProgress(percentProgress, animated: animated) 
    }) 

override func viewDidLoad() { 
    super.viewDidLoad() 
    UploadProgressView.setProgress(0, animated: true) 
    // Do any additional setup after loading the view. 
} 
Смежные вопросы