当我在iOS中从MPMediaItem
检索媒体信息(如Artist
、Album
、歌曲标题(时,有些歌曲没有歌手名称和专辑。
所以我得到了空的返回值
这是我的代码
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];
}