0

以下代码在调用 fetchAssetsWithOptions 时引发 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]!'

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

4

1 回答 1

0

我不确定为什么,但是当您不将任何格式参数传递给 predicateWithFormat: 并将其与 Photos 一起使用时,您会收到此错误;

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

float heightLimit = pixelWidth * 1.95;
[NSPredicate predicateWithFormat:@"pixelHeight >= %f", heightLimit];
于 2015-12-14T04:15:28.513 回答