'MPMediaItem' 没有可见的@interface 声明了选择器 'representativeItem'

No visible @interface for 'MPMediaItem' declares the selector 'representativeItem'

我的 AlbumViewController.h

上有以下代码
@property MPMediaItemCollection *album;

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

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

在 Xcode 6.0 上,此代码编译得很好,但在 Xcode 7.0 上,我不断收到 "No visible interface" 错误。

有人知道怎么处理吗?

您只需要:

MPMediaItem *item = _album.items[i];

MPMediaItemCollection returns NSArrayMPMediaItem 个对象的 items 方法。

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

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

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