我在'fetchAssetsInAssetCollection'中遇到了崩溃尝试使用以下谓词检索PHAssetCollection中的资产时使用我的NSPredicate:
NSMutableArray<PHAssetCollection*>* validCollections = [NSMutableArray array];
PHFetchOptions* options = [PHFetchOptions new];
options.predicate = [NSPredicate predicateWithFormat:@"(mediaType == 1) AND pixelWidth >= (2 * pixelHeight)"];
for (PHAssetCollection* collection in array)
{
PHFetchResult<PHAsset*>* assets = [PHAsset fetchAssetsInAssetCollection:collection options:options];
if (assets.count > 0)
{
[validCollections addObject:collection];
}
}
我在iOS 10设备上收到的消息是:
CRASH: Fetch threw on server ({
"exception info" = {
"exception name" = NSInvalidArgumentException;
"exception reason" = "Unsupported function expression 2 * pixelHeight";
};
})
根据Apple的文档,&lt; pixelHeight&#39;是一个有效的密钥。但是,这只适用于iOS 10,如果我使用&#39; height&#39;代替。
在iOS 9中,这会直接崩溃,并显示以下信息:
CRASH: *** -constantValue only defined for abstract class. Define -[NSFunctionExpression constantValue]!
是否有其他人遇到此问题,或者知道适用于iOS 9和iOS的解决方案10?
从iOS 11开始,这仍然是一个问题。