2013-01-12 20 views
0

當我從MPMediaItem在iOS中檢索媒體信息,如Artist,Album,歌曲標題,但有些歌曲沒有藝術家名稱和專輯。如何用iOS中的MediaItem中的Unknown替換NULL?

,所以我得到的返回值與NULL

這裏是我的代碼

MPMediaItem *currentItem = self.player.nowPlayingItem; 

    NSString *Artist = [currentItem valueForProperty:MPMediaItemPropertyArtist]; 
    NSString *Title = [currentItem valueForProperty:MPMediaItemPropertyTitle]; 
    NSString *Album = [currentItem valueForProperty:MPMediaItemPropertyAlbumTitle]; 

如果歌曲沒有藝術家和專輯名稱,它的返回值NULL

我想用Unknown值替換NULL的值。

我該如何更換它?

感謝您的閱讀。

回答

1

如果你想成爲優雅,你可以一個類別添加到MPMediaItem這樣的:

@implementation MPMediaItem (Readable) 

- (id)readableValueForProperty:(NSString *)prop 
{ 
    id originalValue = [self valueForProperty:prop]; 

    if (originalValue == nil) { 
     return @"Unknown"; 
    } 

    return originalValue; 
} 

@end 

然後,你可以這樣調用:

NSString *artist = [currentItem readableValueForProperty:MPMediaItemPropertyArtist]; 

注意,這是危險的是,如果您獲得的原始地址不是NSString。如果您只使用字符串值進行操作,則應該沒問題。

的一種方法,其始終是安全的,但不易閱讀(和更多的冗餘)將被檢查的手每一個返回值:

NSString *artist = [currentItem valueForProperty:MPMediaItemPropertyArtist]; 
if (artist == nil) artist = @"Unknown"; 
+0

非常感謝你。我知道了。 :) –

1
- (NSString*)getValueFromMediaItem:(MPMediaItem*)item forKey:(NSUInteger)key 
{ 
    NSString * value = [item valueForProperty:key]; 

    if([value isKindOfClass:[NSNull class]] || !value) 
     return @"Unknown"; 

    return value; 
} 

//call this by: 
    NSString *Artist = [self getValueFromMediaItem:currentItem forKey: MPMediaItemPropertyArtist]; 
+0

我不認爲'[NSNull空]'是在遇到不存在的屬性時返回,它相當'無'或'NULL'。 – 2013-01-12 17:38:04

0
if (strArtist==nil) 
     { 
      NSString *[email protected]" "; 
      [ArrayArtist addObject:emptystring]; 
     } 
     else 
     { 
      [ArrayArtist addObject:strArtist]; 

     } 
相關問題