如何将 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 中检索 ArtistAlbum 、来自 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]在遇到不存在的属性时不会返回,而是nilNULL【参考方案3】:
  if (strArtist==nil)
        
            NSString *emptystring=@" ";
            [ArrayArtist addObject:emptystring];
        
        else
        
            [ArrayArtist addObject:strArtist];

        

【讨论】:

以上是关于如何将 NULL 替换为 iOS 中 MediaItem 中的 Unknown?的主要内容,如果未能解决你的问题,请参考以下文章

如何让 Terraform 用默认值替换空值?

sql如何空值替换成null?

如何在ssis中将空白转换为null

雪花复制命令以将默认值替换为 null

我如何创建一个实用函数来检查来自 CSV 的空值并替换为打印 NULL

SQL 函数将 0 替换为 Null