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/