【问题标题】:Error getting artwork for current song获取当前歌曲的艺术作品时出错
【发布时间】:2011-06-14 15:29:11
【问题描述】:

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

但仅在发布时。它仍然显示图像(或缺少图像)。诡异的。

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

在修复之后,我需要调整大小(以支持横向)而不是 IB 的拉伸。
不重要,但仍然是一件好事。

【问题讨论】:

  • 您使用的是 SQLite 数据库吗?你如何得到它的路径?
  • 我的代码中没有一行 SQLite,但我不知道幕后发生了什么。显然与数据库有关。 (大概是 iPod 应用程序使用的库。)//我没有得到具体的路径。相反,我使用nowPlayingItem 并从中获取属性。
  • 我也有这个警告,我从来没有想出如何抑制它,因为我根本没有写任何东西,我只是从 iPod 库中获取信息。我很想看看是否有人回答这个问题。
  • 既然这发生在旧的 Xcode/iOS 版本中(仍然不知道如何),应该删除这个问题吗?

标签: iphone objective-c mpmediaitem artwork


【解决方案1】:

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

【讨论】:

  • 刚刚在 Google 上进行了搜索,因为这个问题再次出现在我的个人资料中。根据this question 的公认答案,这只是一个错误。 10 个月前。
【解决方案2】:

链接在这里 - Why am I getting this CPSqliteStatementPerform error in xcode console

把它放在这里,这样问题就可以被标记为已回答。

【讨论】:

    猜你喜欢
    • 2011-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-13
    • 2016-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多