Одним из возможных путей решения этой проблемы является проверка имен исполнителей на наличие начальных и / или конечных пробелов.Вы можете проверить первый и последний символ строки на членство с помощью NSCharacterSet
whitespaceCharacterSet
.Если true, тогда обрежьте все начальные и / или конечные пробелы, используя метод NSString
stringByTrimmingCharactersInSet
.Затем вы можете добавить обрезанную строку или исходную строку к NSMutableOrderedSet
.Упорядоченный набор будет принимать только отдельные объекты, поэтому повторные имена исполнителей добавляться не будут:
MPMediaQuery *query=[MPMediaQuery artistsQuery];
NSArray *artists=[query collections];
NSMutableOrderedSet *orderedArtistSet = [NSMutableOrderedSet orderedSet];
for(MPMediaItemCollection *collection in artists)
{
NSString *artistTitle = [[collection representativeItem] valueForProperty:MPMediaItemPropertyArtist];
unichar firstCharacter = [artistTitle characterAtIndex:0];
unichar lastCharacter = [artistTitle characterAtIndex:[artistTitle length] - 1];
if ([[NSCharacterSet whitespaceCharacterSet] characterIsMember:firstCharacter] ||
[[NSCharacterSet whitespaceCharacterSet] characterIsMember:lastCharacter]) {
NSLog(@"\"%@\" has whitespace!", artistTitle);
NSString *trimmedArtistTitle = [artistTitle stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
[orderedArtistSet addObject:trimmedArtistTitle];
} else { // No whitespace
[orderedArtistSet addObject:artistTitle];
}
}
Вы также можете вернуть массив из упорядоченного набора, если он вам нужен:
NSArray *arrayFromOrderedSet = [orderedArtistSet array];