Ошибка при получении обложки для текущей песни
Получение обложки альбома для текущей песни и использование ее для изменения определенного imageView.image
генерирует ошибку, но больше не падает. (Это было раньше, потому что я оставил if (!artwork)
обработка ошибок. Eheh.)
Этот метод:
- (void)handleNowPlayingItemChanged:(id)notification {
MPMediaItem *item = self.musicPlayer.nowPlayingItem;
CGSize albumCoverSize = self.albumCover.bounds.size;
MPMediaItemArtwork *artwork =
[item valueForProperty:MPMediaItemPropertyArtwork];
if (artwork) {
self.albumCover.image = [artwork imageWithSize:albumCoverSize];
} else {
self.albumCover.image = nil;
}
}
Взрывается так:
CPSqliteStatementPerform: attempt to write a readonly database for
UPDATE ddd.ext_container SET orig_date_modified = (SELECT date_modified
FROM container WHERE pid=container_pid) WHERE orig_date_modified=0
CPSqliteStatementReset: attempt to write a readonly database for
UPDATE ddd.ext_container SET orig_date_modified = (SELECT date_modified
FROM container WHERE pid=container_pid) WHERE orig_date_modified=0
Но только при запуске. И это все еще показывает изображение (или его отсутствие). Weird.
Изменить: Библиотека iPod доступна только для чтения (приложения не могут ничего изменить, только iTunes), поэтому, возможно, она кричит на
я за то, что написал что-то только для чтения, но все еще разрешаю, потому что ничего не читается, изменяется?
И после того, как это исправлено, мне нужно заставить работать изменение размера (для поддержки Landscape) вместо растяжения IB.
Не жизненно важно, но все же приятно иметь.
2 ответа
Ссылка здесь - Почему я получаю эту ошибку CPSqliteStatementPerform в консоли XCode
Поместите это здесь, чтобы вопрос мог быть помечен как отвеченный.
Вот что я делаю. Он не создает ошибок и создает изображение каждый раз. Если в песне нет изображения, по умолчанию используется тот, который я предоставляю. Я думаю, что из-за того, что вы не проверяете изображение с определенным размером (320 на 320, что соответствует ширине экрана для меня), оно не может понять это правильно. Я не знаю, почему вы получаете ошибку SQLite, но, надеюсь, это исправит!
MPMediaItemArtwork *artworkItem = [self.musicPlayer.nowPlayingItem valueForProperty: MPMediaItemPropertyArtwork];
if ([artworkItem imageWithSize:CGSizeMake(320, 320)]) {
[self.currentlyPlayingArtworkView setImage:[artworkItem imageWithSize:CGSizeMake (320, 320)]];
}
else {
[self.currentlyPlayingArtworkView setImage:[UIImage imageNamed:@"NoArtworkImage"]];
}