ios - 如何在 iOS 中用 MediaItem 中的 Unknown 替换 NULL?

标签 ios cocoa-touch mpmediaitem

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

所以我得到了 NULL 的返回值

这是我的代码

MPMediaItem *currentItem = self.player.nowPlayingItem;

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

如果歌曲没有艺术家和专辑名称,则返回 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";

关于ios - 如何在 iOS 中用 MediaItem 中的 Unknown 替换 NULL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14295893/

相关文章:

ios - 为什么我的 Lottie 文件没有出现在我的项目中?

ios - JSON无法在iOS上正常工作

ios - UIImageView 动画的动画帧图像

ios - 在 iOS 上检测传入的 NotificationCenter 通知

ipod - MPMediaItem 更改属性

ios - MPMediaQuery 无效值

android - 从 Apple Store 安装的应用程序会自动创建主屏幕快捷方式图标吗?

ios - 在 iOS 中加载 4 channel 纹理数据

ios - Xcode 4 Memory Leak Instrument如何获取发生泄漏的代码行

ios - 当MPMediaItem assetURL为零时如何解决?