NSProgress не обновляет свой totalUnitCount и завершил UnitCount

Я пытаюсь сообщить о загрузке файла сына с сервера запрашивающей стороне через экземпляр NSProgress, Тем не менее, когда я установил totalUnitCount а также completedUnitCount значения, они просто не обновляются на NSProgress объект.

Вот как я изначально создаю объект прогресса:

let progressUserInfo: [ String: String ] = [
    NSProgressFileOperationKindKey: NSProgressFileOperationKindDownloading,
]
let progress = NSProgress(parent: nil, userInfo: progressUserInfo)
progress.kind = NSProgressKindFile
progress.totalUnitCount = -1
progress.completedUnitCount = 0

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

Теперь, когда я получаю ответ от сервера, я обновляю его следующим способом:

func URLSession(session: NSURLSession, dataTask: NSURLSessionDataTask, didReceiveResponse response: NSURLResponse, completionHandler: (NSURLSessionResponseDisposition) -> Void) {
    progress.totalUnitCount = response.expectedContentLength
    completionHandler(.Allow)
}

Затем, каждый раз, когда я получаю кусок данных с сервера, я обновляю прогресс:

func URLSession(session: NSURLSession, dataTask: NSURLSessionDataTask, didReceiveData data: NSData) {
    progress.totalUnitCount = dataTask.countOfBytesExpectedToReceive
    progress.completedUnitCount = dataTask.countOfBytesReceived
}

Чтобы проверить, работает ли это, я добавил KVO для fractionCompleted имущество. Этот наблюдатель срабатывает каждый раз, когда я обновляю completedUnitCount Свойство, однако, при возврате значений в объекте выполнения ничего не изменилось:

override func observeValueForKeyPath(keyPath: String, ofObject object: AnyObject, change: [NSObject : AnyObject], context: UnsafeMutablePointer<Void>) {
    let progress = object as NSProgress
    println("loaded user: \(progress.localizedDescription) - \(progress.localizedAdditionalDescription) = \(progress.fractionCompleted)")
}

Это всегда выводит loaded user: Downloading files… - = 0.0

В настоящее время я понятия не имею, что здесь происходит, и если это какая-то быстрая проблема или неправильное использование NSProgress апи.

Заранее спасибо за помощь!

// РЕДАКТИРОВАТЬ: Несмотря на то, что отладка полностью сломана для меня в Swift, и я не могу po progress в отладчике, когда делаю debugPrint() в разных местах вывод, который я получаю, следующий:

<NSProgress: 0x7f9473520f20> : Parent: 0x0 / Fraction completed: 0.0000 / Completed: 0 of -1
<NSProgress: 0x7f9473520f20> : Parent: 0x0 / Fraction completed: 0.0000 / Completed: 0 of -1
<NSProgress: 0x7f9473520f20> : Parent: 0x0 / Fraction completed: 0.0000 / Completed: 0 of -1

Так что я определенно использую то же самое NSProgress экземпляр везде!

0 ответов

Другие вопросы по тегам