如何搜索iPod的圖書館以同樣的方式作爲的iOS音樂應用程序?我想進行一般查詢,返回每個藝術家,專輯和歌曲的結果。例如,如果我搜索Kenny Chesney,我希望歌曲查詢返回所有Kenny Chesney歌曲(以及任何包含Kenny Chesney的歌曲標題或專輯)。當我爲每個屬性(歌曲標題,專輯標題,藝術家姓名),返回一個空數組。MPMediaQuery搜索藝術家,專輯和歌曲
下面是一些代碼,可能會給你什麼,我試圖完成一個更好的想法:
MPMediaPropertyPredicate *songPredicate =
[MPMediaPropertyPredicate predicateWithValue:searchText
forProperty:MPMediaItemPropertyTitle
comparisonType:MPMediaPredicateComparisonContains];
MPMediaPropertyPredicate *albumPredicate =
[MPMediaPropertyPredicate predicateWithValue:searchText
forProperty:MPMediaItemPropertyAlbumTitle
comparisonType:MPMediaPredicateComparisonContains];
MPMediaPropertyPredicate *artistPredicate =
[MPMediaPropertyPredicate predicateWithValue:searchText
forProperty:MPMediaItemPropertyArtist
comparisonType:MPMediaPredicateComparisonContains];
MPMediaQuery *songsQuery = [MPMediaQuery songsQuery];
[songsQuery addFilterPredicate:songNamePredicate];
[songsQuery addFilterPredicate:artistNamePredicate];
[songsQuery addFilterPredicate:albumNamePredicate];
NSLog(@"%@", [songsQuery items]);
我必須通過運行單獨的每個謂詞查詢這方面的工作,但是這似乎很效率低下!
只是提到他,如果你做3個分別查詢,你可以用重複的項目結束了。例如。如果專輯被命名爲藝術家等 – 2013-02-06 18:03:35
@relikd是的,這是我的地方。我有三個不同的查詢添加到三個數組 - 但有重複的 - 這顯然是一個問題。 – daidai
你可以在將它們與'if([arr indexOfObject:song] == NSNotFound){[arr addObject:song]; }'。但是這並不是非常有效,特別是在大型陣列上。這是因爲在添加新項目之前,indexOfObject:向所有項目發送了一個isEqual:消息。 – 2013-02-07 14:03:57