可可触摸-如何在iOS中用MediaItem中的Unknown替换NULL



当我在iOS中从MPMediaItem检索媒体信息(如ArtistAlbum、歌曲标题(时,有些歌曲没有歌手名称和专辑。

所以我得到了空的返回值

这是我的代码

MPMediaItem *currentItem = self.player.nowPlayingItem;
    NSString *Artist = [currentItem valueForProperty:MPMediaItemPropertyArtist];
    NSString *Title = [currentItem valueForProperty:MPMediaItemPropertyTitle];
    NSString *Album = [currentItem valueForProperty:MPMediaItemPropertyAlbumTitle];

若歌曲并没有"歌手"one_answers"专辑"名称,则返回NULL值。

我想用Unknown值替换NULL值。

我该如何更换?

谢谢你的阅读。

如果你想变得优雅,你可以在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";
- (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];
  if (strArtist==nil)
        {
            NSString *emptystring=@" ";
            [ArrayArtist addObject:emptystring];
        }
        else
        {
            [ArrayArtist addObject:strArtist];
        }

最新更新