如何将 NULL 替换为 iOS 中 MediaItem 中的 Unknown?
Posted
技术标签:
【中文标题】如何将 NULL 替换为 iOS 中 MediaItem 中的 Unknown?【英文标题】:How to replace NULL with Unknown from MediaItem in iOS? 【发布时间】:2013-01-12 17:27:18 【问题描述】:当我在 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 ,则返回 NULL
Value。
我想将 NULL
值替换为 Unknown
值。
如何更换?
感谢您的阅读。
【问题讨论】:
【参考方案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";
【讨论】:
非常感谢兄弟。我得到了它。 :)【参考方案2】:- (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];
【讨论】:
我认为[NSNull null]
在遇到不存在的属性时不会返回,而是nil
或NULL
。【参考方案3】:
if (strArtist==nil)
NSString *emptystring=@" ";
[ArrayArtist addObject:emptystring];
else
[ArrayArtist addObject:strArtist];
【讨论】:
以上是关于如何将 NULL 替换为 iOS 中 MediaItem 中的 Unknown?的主要内容,如果未能解决你的问题,请参考以下文章