ios - PHAssetResource.assetResources(对于 : asset). first.OriginalFilename 在 300 个 Assets 后给出 nil

标签 ios swift xcode phasset

extension PHAsset {

    var originalFilename: String? {

        var fname:String?

            let resources = PHAssetResource.assetResources(for: self)
            if let resource = resources.first {
                fname = resource.originalFilename
            }
        return fname
    }
}

我正在使用 PHAsset 的这个扩展来获取 Assets 的原始文件名。大约有 2000 个 Assets ,此扩展给出前 300 个 Assets 的原始文件名,之后返回 nil。我很困惑,这怎么可能? Xcode 中有任何错误吗?但是我使用的是 Xcode 8.1 和 swift 3.0。 谁能帮我解决这个问题? 提前致谢。

最佳答案

这看起来像是我曾经遇到的错误:PHAsset assetResourcesForAsset fails when called too often

事实证明这是一个糟糕的内存管理问题。在某个时候,设备的可用 RAM 非常低,这时它开始返回 nil。 通过将周围的操作放在 autorelease block 中(我正在加载 PHAsset 的地方),问题就消失了。

我仍然有一些罕见的情况,原始文件名是 nil(或者 Assets 没有资源,我真的不知道),但这可能来自 Assets 中的错误) .

关于ios - PHAssetResource.assetResources(对于 : asset). first.OriginalFilename 在 300 个 Assets 后给出 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41934799/

相关文章:

ios - UITableViewCell textLabel 在选择时改变位置

ios - Swift - Alamofire totalBytesExpectedToRead 返回 -1,即使设置了 Content-length

iphone - 将连接更改为 3G 或 EDGE 以测试慢速互联网连接

ios - 检测在手势识别器对象区域之外开始的滑动

ios - 如何选择十六进制形式或 RGB 形式的颜色,而不是使用 Swift 中给我的颜色

ios - Xcode 无法存档 React Native 项目

ios - AVplayer 无法播放 iPhone 画廊中的视频

swift - "Cannot assign value of type ' 字符串 ' to type ' AnyObject? '", swift 3,Xcode 8 测试版 6

ios Swift 图表问题

ios - 使用xcrun创建带有符号的IPA