0

当我从 iOS 中检索媒体信息(如Artist、、Album歌曲标题MPMediaItem)时,有些歌曲没有艺术家姓名和专辑。

所以我得到了 NULL 的返回值

这是我的代码

MPMediaItem *currentItem = self.player.nowPlayingItem;

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

如果歌曲没有 Artist 和 Album name ,则返回NULLValue。

我想用值替换那个NULLUnknown

我该如何更换它?

感谢您的阅读。

4

3 回答 3

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];
于 2013-01-12T17:33:57.370 回答
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";
于 2013-01-12T17:34:56.660 回答
0
  if (strArtist==nil)
        {
            NSString *emptystring=@" ";
            [ArrayArtist addObject:emptystring];
        }
        else
        {
            [ArrayArtist addObject:strArtist];

        }
于 2014-04-07T06:16:29.727 回答