我想向MPMediaQuery
添加一系列谓词,但我希望使用OR汇总,而不是AND:
MPMediaQuery *q = [MPMediaQuery songsQuery];
NSMutableArray *a = [@[] mutableCopy];
for (DFLocalMediaItem *item in self.offlineItems) {
MPMediaPropertyPredicate* p = [MPMediaPropertyPredicate predicateWithValue:item.identifier
forProperty:MPMediaItemPropertyPersistentID];
[a addObject:p];
}
NSSet *s = [NSSet setWithArray:a];
[q setFilterPredicates:s];
当我创建这个集合时,它使用AND聚合上面的MPMediaPropertyPredicate
(显然它不会起作用......因为单个MPMediaItem显然会有一个标识符)
想法?
答案 0 :(得分:2)
由于公共API,您无法拥有此类功能。 official docs表示
当您对查询应用多个谓词时,查询会使用逻辑AND运算符组合它们。
但是如果你想从你的项目中构建一个MPMediaItemCollection,你可以构造一个类似于MPMediaQuery结构的数组,它具有相同的方法,但后面有静态数组。