“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];
MPMediaItemCollection
的 items
方法返回 NSArray
的 MPMediaItem
对象。
representativeItem
属性是MPMediaItemCollection
的属性,而不是MPMediaItem
,因此出现错误。
代码在 Xcode 6 上编译,因为objectAtIndex:
返回一个id
,您可以在id
上调用任何方法。在 Xcode 7(实际上是 ios 9)中,数组被定义为 MPMediaItem
类型的数组,因此编译器现在知道数组中的类型,并且可以在编译时执行更好的错误检查。
顺便说一句 - 即使代码在 Xcode 6 下编译,它也会在运行时崩溃。
【讨论】:
以上是关于“MPMediaItem”没有可见的@interface 声明选择器“representativeItem”的主要内容,如果未能解决你的问题,请参考以下文章