Нет видимого @interface для «MPMediaItem», объявляет селектор «representativeItem»

У меня есть следующий код в моем AlbumViewController.h

@property MPMediaItemCollection *album;

И на моем .m я использую это свойство следующим образом:

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

В Xcode 6.0 этот код компилируется просто отлично, но в Xcode 7.0 я продолжаю получать ошибку «Нет видимого интерфейса».

Кто-нибудь знает, как с этим справиться?


person Alesqui    schedule 22.09.2015    source источник


Ответы (1)


Вы просто хотите:

MPMediaItem *item = _album.items[i];

Метод items объекта MPMediaItemCollection возвращает NSArray из MPMediaItem объектов.

Свойство representativeItem является свойством MPMediaItemCollection, а не MPMediaItem, отсюда и ошибка.

Код, скомпилированный на Xcode 6, потому что objectAtIndex: возвращает id, и вы можете вызвать любой метод для id. В Xcode 7 (на самом деле iOS 9) массив определяется как массив типа MPMediaItem, поэтому компилятор теперь знает тип в массиве, и во время компиляции можно выполнять лучшую проверку ошибок.

Кстати, даже если код скомпилирован под Xcode 6, он вылетит во время выполнения.

person rmaddy    schedule 22.09.2015