更新到 Xcode 7.1(从 6.4)导致 UIIMageView 动画损坏

Posted

技术标签:

【中文标题】更新到 Xcode 7.1(从 6.4)导致 UIIMageView 动画损坏【英文标题】:Updated to Xcode 7.1 (from 6.4) caused UIIMageView animation broken 【发布时间】:2015-11-20 17:30:47 【问题描述】:

我升级了在 6.4 中编译良好的 Xcode 项目,并选择不升级到 Swift 2.0(我希望在导致更多错误之前先编译它)。

我遇到了数百个错误,现在大部分都已修复,但我无法弄清楚这一点。这在 6.4 中一直有效:

var imgListArray:NSMutableArray = []
self.imageView.animationImages = imgListArray as [AnyObject]

我在 7.1.1 中遇到错误:

'NSMutableArray' is not implicitly convertible to '[AnyObject]'; did you mean to use 'as' to explicitly convert?

如果我尝试编译器的建议,我会得到:

self.imageView.animationImages = imgListArray as [AnyObject] as [AnyObject]

这给了我错误:

Cannot assign value of type '[AnyObject]' to type '[UIImage]?'

【问题讨论】:

你的 imgListArray 应该是 [UIImage] 而不是 [AnyObject] 所以你不需要强制转换它。 【参考方案1】:

您要做的就是将 imgListArray 声明为图像数组。 以下是如何做到这一点:

var imgListArray: [UIImage] = []
self.imageView.animationImages = imgListArray

【讨论】:

我在尝试添加到可变数组时也遇到了错误。 什么意思?能否提供代码和错误信息? “[UIImage]”类型的值没有成员“addObject”。如果您查看我的代码,您会发现它是一个可变数组,因此我可以向其中添加图像。 使用 append() 代替 addObject【参考方案2】:

以下是我修复您的错误的方法:

   var imgListArray = [AnyObject]()
        self.imageView.animationImages = imgListArray as! [UIImage]

【讨论】:

“[UIImage]”类型的值没有成员“addObject”。如果您查看我的代码,您会发现它是一个可变数组,因此我可以向其中添加图像。 @JeshuaLacock:var imgListArray = [AnyObject]() 声明创建了一个可变的 Swift Array。 Swift 数组没有 addObject - 请改用 append 啊,我将它声明为 NSMutableArray - 太惊讶了。无论如何 - 我让它编译,但我正在修复项目的其余部分以使其完全编译以测试你的答案以确保它有效,如果是这样我会接受它。

以上是关于更新到 Xcode 7.1(从 6.4)导致 UIIMageView 动画损坏的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 更新到 7.2 但仍然只显示 7.1

如何从 xcode 6.4 向 SVN 提交代码?

从Jboss EAP 6.4迁移到EAP 7.1

将 Xcode 6.4 更新到 Xcode 7.0 后,NSData dataWithContentsOfURL 为空

如何将 Xcode 从 7.0 版本降级到 6.4?

Xcode 6.4 故事板崩溃