MPMediaQuery search for Artists, Albums, and Songs

前端 未结 4 1107
感动是毒
感动是毒 2020-12-15 10:18

How can I search the iPod Library in the same manner as the iOS Music application? I want to make general queries that return results for each Artists, Albums, and Songs. Fo

4条回答
  •  一生所求
    2020-12-15 10:57

    Combining your predicates this way makes it like "AND" relationship. It means that you are querying for a song that has title, album and name all are matching the search text.

    To achive what you are trying to do, you should run 3 queries and combining the results in a proper way.

    If you run:

    MPMediaPropertyPredicate *artistPredicate =
    [MPMediaPropertyPredicate predicateWithValue:searchText
                                     forProperty:MPMediaItemPropertyArtist
                                  comparisonType:MPMediaPredicateComparisonContains];
    
    NSSet *predicates = [NSSet setWithObjects: artistPredicate, nil];
    
    MPMediaQuery *songsQuery =  [[MPMediaQuery alloc] initWithFilterPredicates: predicates];
    
    NSLog(@"%@", [songsQuery items]);
    

    This will return you with artists matching your search. The same you should do for songs and albums.

    If you this this is slow, you may retrieve all the media at once and filter it manually:

    MPMediaQuery *everything = [[MPMediaQuery alloc] init];
    
    NSLog(@"Logging items from a generic query...");
    NSArray *itemsFromGenericQuery = [everything items];
    for (MPMediaItem *song in itemsFromGenericQuery) {
        NSString *songTitle = [song valueForProperty: MPMediaItemPropertyTitle];
        /* Filter found songs here manually */
    }
    

提交回复
热议问题