获取当前歌曲的艺术作品时出错

时间:2011-06-14 15:29:11

标签: iphone objective-c mpmediaitem artwork

抓取当前歌曲的专辑封面并使用它来更改某个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

但仅限于发布。它仍然显示图像(或缺乏图像)。奇怪的。

编辑:iPod库是只读的(应用无法更改任何内容,只有iTunes),所以也许它会大喊大叫 我写了一个只读的东西,但仍然允许它,因为没有任何readonly被修改?

在修好之后,我需要调整工作大小(对于Landscape支持)而不是IB的拉伸。
不重要,但仍然是一件好事。

2 个答案:

答案 0 :(得分:0)

这就是我的工作。它不会产生任何错误,并且每次都会产生图像。如果歌曲没有图像,则默认为我提供的图像。我想因为你没有检查具有特定尺寸的图像(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"]];
}

答案 1 :(得分:0)

此处链接 - Why am I getting this CPSqliteStatementPerform error in xcode console

将此放在此处,以便将问题标记为已回答。