使用照片框架的NSPredicate时出现异常:定义-[NSFunctionExpression constantValue]!

使用照片框架的NSPredicate时出现异常:定义-[NSFunctionExpression constantValue]!,nspredicate,photokit,phasset,Nspredicate,Photokit,Phasset,以下代码在调用FetchAssetWithOptions时引发NSInvalidArgumentException: PHFetchOptions *allPhotosOptions = [[PHFetchOptions alloc] init]; allPhotosOptions.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:NO]]; allPhoto

以下代码在调用FetchAssetWithOptions时引发NSInvalidArgumentException:

PHFetchOptions *allPhotosOptions = [[PHFetchOptions alloc] init];
allPhotosOptions.sortDescriptors =
        @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:NO]];
allPhotosOptions.predicate = 
        [NSPredicate predicateWithFormat:@"pixelHeight >=  pixelWidth * 1.95" ];
self.allPhotos = [PHAsset fetchAssetsWithOptions:allPhotosOptions];
信息是

NSInvalidArgumentException ... reason: '*** -constantValue only defined for abstract class.  
    Define -[NSFunctionExpression constantValue]!'

我尝试了谓词格式字符串的多种变体,但当我尝试使用乘法时,总是得到这个消息。我做错了什么?

我不知道为什么,但当您没有将任何格式参数传递给predicateWithFormat:并将其用于照片时,您会出现此错误

我能够通过确保传递格式参数来解决这个问题。因此,在你的情况下:

float heightLimit = pixelWidth * 1.95;
[NSPredicate predicateWithFormat:@"pixelHeight >= %f", heightLimit];