Ошибка при получении обложки для текущей песни - PullRequest
3 голосов
/ 14 июня 2011

Захват обложки альбома для текущей песни и использование ее для изменения определенной imageView.image генерирует ошибку, но больше не вылетает. (Это было раньше, потому что я пропустил обработку ошибок if (!artwork). Эхех.)

Этот метод:

- (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 ]

0 голосов
/ 02 апреля 2012

Ссылка здесь - Почему я получаю эту ошибку CPSqliteStatementPerform в консоли xcode

Поместите это здесь, чтобы вопрос можно было пометить как отвеченный.

0 голосов
/ 04 марта 2012

Вот что я делаю. Он не создает ошибок и создает изображение каждый раз. Если в песне нет изображения, по умолчанию используется тот, который я предоставляю. Я думаю, что из-за того, что вы не проверяете изображение с определенным размером (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"]];
}
...