如何在 Swift 4.2 中使用 NSPredicate 仅从智能相册中获取图像资源?
How to fetch only image assets from smart albums with NSPredicate in Swift 4.2?
我想从用户 phone 上的所有智能相册中获取图像资源。目前我正在获取图片和视频,但这不是我想要的。
在我的研究中,我总是找到相同的解决方案,但它似乎不再有效,因为问题已经存在好几年了。所以我找不到任何最新的解决方案。
这是我找到的解决方案
let fetchOptions = PHFetchOptions()
fetchOptions.predicate = NSPredicate(format: "mediaType = %d", PHAssetMediaType.image.rawValue)
let smartAlbums = PHAssetCollection.fetchAssetCollections(with: .smartAlbum, subtype: .any, options: fetchOptions)
let fetchAssetsResult = PHAsset.fetchAssets(in: collection, options: fetchOptions)
执行这行代码时,我收到以下错误消息
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unsupported predicate in fetch options: mediaType == 1'
是否有任何新的工作解决方案?
试试,
let albumName = "Your Album Name" or "Your Album Local Identifier"
let fetchOptions = PHFetchOptions()
fetchOptions.predicate = NSPredicate(format: "title = %@", albumName)
let fetchResult: PHFetchResult = PHAssetCollection.fetchAssetCollections(with: .album, subtype: .any, options: fetchOptions)
支持的键是,
详情请参考PHFetchOptions
在 Bappaditya 的帮助下,我发现我在错误的资产获取上使用了谓词。 mediaType 密钥仅用于 PHAsset.fetchAsset()
而不是用于 PHAssetCollection.fetchAssetCollection()
,因为我正在使用它。
此代码现在有效
let fetchOptions = PHFetchOptions()
let smartAlbums = PHAssetCollection.fetchAssetCollections(with: .smartAlbum, subtype: .any, options: fetchOptions)
fetchOptions.predicate = NSPredicate(format: "mediaType == %d", PHAssetMediaType.image.rawValue)
let fetchAssetsResult = PHAsset.fetchAssets(in: collection, options: fetchOptions)
我想从用户 phone 上的所有智能相册中获取图像资源。目前我正在获取图片和视频,但这不是我想要的。
在我的研究中,我总是找到相同的解决方案,但它似乎不再有效,因为问题已经存在好几年了。所以我找不到任何最新的解决方案。
这是我找到的解决方案
let fetchOptions = PHFetchOptions()
fetchOptions.predicate = NSPredicate(format: "mediaType = %d", PHAssetMediaType.image.rawValue)
let smartAlbums = PHAssetCollection.fetchAssetCollections(with: .smartAlbum, subtype: .any, options: fetchOptions)
let fetchAssetsResult = PHAsset.fetchAssets(in: collection, options: fetchOptions)
执行这行代码时,我收到以下错误消息
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unsupported predicate in fetch options: mediaType == 1'
是否有任何新的工作解决方案?
试试,
let albumName = "Your Album Name" or "Your Album Local Identifier"
let fetchOptions = PHFetchOptions()
fetchOptions.predicate = NSPredicate(format: "title = %@", albumName)
let fetchResult: PHFetchResult = PHAssetCollection.fetchAssetCollections(with: .album, subtype: .any, options: fetchOptions)
支持的键是,
详情请参考PHFetchOptions
在 Bappaditya 的帮助下,我发现我在错误的资产获取上使用了谓词。 mediaType 密钥仅用于 PHAsset.fetchAsset()
而不是用于 PHAssetCollection.fetchAssetCollection()
,因为我正在使用它。
此代码现在有效
let fetchOptions = PHFetchOptions()
let smartAlbums = PHAssetCollection.fetchAssetCollections(with: .smartAlbum, subtype: .any, options: fetchOptions)
fetchOptions.predicate = NSPredicate(format: "mediaType == %d", PHAssetMediaType.image.rawValue)
let fetchAssetsResult = PHAsset.fetchAssets(in: collection, options: fetchOptions)