获取PHAsset的文件大小而不加载资源?

Rya*_*ton 7 image photolibrary swift phasset

有没有办法在PHAsset没有做的情况下将文件大小放在磁盘上requestImageDataForAsset或将其转换为ALAsset?我正在加载用户照片库的预览 - 可能有数千个 - 并且我的应用程序必须知道他们在导入之前知道大小.

Rya*_*ton 15

您可以获取fileSizePHAsset并将其转换为人类可读的形式,如下所示:

      let resources = PHAssetResource.assetResources(for: yourAsset) // your PHAsset

      var sizeOnDisk: Int64? = 0

      if let resource = resources.first {
        let unsignedInt64 = resource.value(forKey: "fileSize") as? CLong
        sizeOnDisk = Int64(bitPattern: UInt64(unsignedInt64!))
      }
Run Code Online (Sandbox Code Playgroud)

然后使用你的sizeOnDisk变量并将其传递给这样的方法......

func converByteToHumanReadable(_ bytes:Int64) -> String {
     let formatter:ByteCountFormatter = ByteCountFormatter()
     formatter.countStyle = .binary

     return formatter.string(fromByteCount: Int64(bytes))
 }
Run Code Online (Sandbox Code Playgroud)

  • 它不在任何文档中,因为它正在访问头文件.从技术上讲,这是Apple的一小部分私有API.但是,我们提交了一个版本并获得了完整的批准而没有问题. (3认同)