“MPMediaItem”没有可见的@interface 声明选择器“representativeItem”

Posted

技术标签:

【中文标题】“MPMediaItem”没有可见的@interface 声明选择器“representativeItem”【英文标题】:No visible @interface for 'MPMediaItem' declares the selector 'representativeItem' 【发布时间】:2015-09-22 16:07:02 【问题描述】:

我的 AlbumViewController.h 上有以下代码

@property MPMediaItemCollection *album;

在我的 .m 上,我像这样使用这个属性:

MPMediaItem *item = [[_album.items objectAtIndex:i] representativeItem];

在 Xcode 6.0 上,此代码编译得很好,但在 Xcode 7.0 上,我不断收到“无可见界面”错误。

有人知道怎么处理吗?

【问题讨论】:

【参考方案1】:

你只是想要:

MPMediaItem *item = _album.items[i];

MPMediaItemCollectionitems 方法返回 NSArrayMPMediaItem 对象。

representativeItem 属性是MPMediaItemCollection 的属性,而不是MPMediaItem,因此出现错误。

代码在 Xcode 6 上编译,因为objectAtIndex: 返回一个id,您可以在id 上调用任何方法。在 Xcode 7(实际上是 ios 9)中,数组被定义为 MPMediaItem 类型的数组,因此编译器现在知道数组中的类型,并且可以在编译时执行更好的错误检查。

顺便说一句 - 即使代码在 Xcode 6 下编译,它也会在运行时崩溃。

【讨论】:

以上是关于“MPMediaItem”没有可见的@interface 声明选择器“representativeItem”的主要内容,如果未能解决你的问题,请参考以下文章

MPMediaItem 生成唯一文件名

获取 MPMediaItem 添加到 iTunes 库的日期

批量获取多个 MPMediaItem 的属性

获取 MPMediaItem 的 iTunes URL

如何访问 MPMediaItem 的“排序为”字段?

MPMediaItem 到 AVAsset 到 .MP3