ios - 使用 iOS SDK 将文件上传到 Firebase 时总上传计数为 0

标签 ios objective-c swift firebase firebase-storage

我想在将 iOS 应用程序中录制的视频文件上传到 Firebase 时向用户显示进度条,因此我使用了 SDK 的 observeStatus 功能:

// Create a root reference
FIRStorageReference *storageRef = [_storage reference];

// Create a reference to the video
FIRStorageReference *videoRef = [storageRef child:uuidString];

// Upload the file
FIRStorageUploadTask* uploadTask = [videoRef putFile:url metadata:nil];

[uploadTask observeStatus:FIRStorageTaskStatusProgress handler:^(FIRStorageTaskSnapshot *snapshot) {
    // A progress event occurred
    double percentComplete = 100.0 * (snapshot.progress.completedUnitCount) / (snapshot.progress.totalUnitCount);

    NSLog(@"Video with ID %d recording upload progress: %f, completed unit count %lld, total unit count %lld", video.videoId, percentComplete, snapshot.progress.completedUnitCount, snapshot.progress.totalUnitCount);
}];

但是,“总单元数”似乎始终为 0,这意味着计算的完成百分比在整个除以 0 的情况下有点疯狂:

Video with ID 3 recording upload progress: inf, completed unit count 163922, total unit count 0

我做错了什么吗?按照描述的文档进行操作 here .

[也在 Swift 中复制]

最佳答案

我们实际上正确地创建了 NSProgress,并为内存中的上传适本地更新它 (putData),但是没有获取文件上传的文件大小 (putFile) 因为显然我没有发现文件属性/它们并不总是正确的。

我很快就会进行修复,现在您可以使用 NSFileManager.defaultManager().attributesOfItemAtPath(url.path!)[NSFileSize]!.longLongValue 解决方法来获取文件大小:)

编辑(2016 年 10 月 10 日):这个问题已经解决,如果您使用最新版本的 Firebase 存储,您将不会遇到这个问题:)

关于ios - 使用 iOS SDK 将文件上传到 Firebase 时总上传计数为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37600979/

相关文章:

arrays - Swift 将相同的数组值传递给 PHP/MySQL

python - 如何在 IOS 应用程序上本地解析 AIML 文件?

ios - UITapGestureRecognizer 不在导航栏标题 View 中的 UIView 上工作?

iphone - Navigation Bar 后退按钮 Action 即使在按钮之后也执行

ios - 带有自定义单元格的 UITableView 在 iOS 6 上绘制良好,但在 iOS 7 中完全白色

ios - 重启后 iOS 模拟器上的 BootStrap 错误仍然存​​在

objective-c - NSTokenFieldCell 子类强制使用核心数据对多关系

iphone - 使用核心数据生成的类作为模型对象……?

objective-c - NSTextField 可访问性 - 如何为画外音提供替代文本

ios - 从IOS中的手机联系人获取人名和号码