PHAsset fetchAssetsInAssetCollection崩溃

时间:2017-02-02 15:51:53

标签: ios objective-c phasset

我在'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开始,这仍然是一个问题。

0 个答案:

没有答案