
在iOS编程中,我们有animateWithDuration:方法,它是UIVIEw的一部分.
所以我尝试使用Xcode的自动完成并开始输入:
UIVIEw.animateWith
自动填充显示:
UIVIEw.animateWithDuration(duration: NSTimeInterval,animations: () -> VoID)
然后我选中了“持续时间”字段,然后输入一个数字:
UIVIEw.animateWithDuration(0.5,animations: () -> VoID)
然后我再次选中了动画块,然后像在Objective C中一样按下输入,Xcode现在显示:
UIVIEw.animateWithDuration(0.5,animations: { () -> VoID in code}) 所以我最后一次用我的代码替换“代码”:
UIVIEw.animateWithDuration(0.5,animations: { () -> VoID in self.customVIEw?.transform = CGAffinetransformMakeTranslation(0.0,0.0);}) 那时Xcode然后给我错误:
Cannot invoke ‘animateWithDuration’ with an argument List of type
‘(floatliteralConvertible,animations: () -> VoID)’
我不明白.这是Xcode为我生成的自动完成代码,为什么它会给我一个错误?
我注意到如果做一个简单的声明,如:
UIVIEw.animateWithDuration(0.5,animations: { () -> VoID in var num = 1 + 1;}) 它没有给我任何错误.
任何人的想法?
解决方法 从 “Calling Methods Through Optional Chaining”开始:Any attempt to set a property through optional chaining returns a
value of typeVoID?,which enables you to compare against nil to see
if the property was set successfully …
因此表达式的类型
self.customVIEw?.transform = CGAffinetransformMakeTranslation(0.0,0.0)
是虚空吗? (可选VoID).如果一个闭包只包含一个表达式,
然后该表达式自动作为返回值.
错误信息是非常误导的,但它来自虚空的事实?是
与虚空不同.
添加显式返回语句可以解决问题:
UIVIEw.animateWithDuration(0.5,0.0) return})
更新:添加一个不必要的显式返回语句
再使用Swift 1.2(Xcode 6.3).从测试版发行说明:
总结Unannotated single-Expression closures with non-VoID return types can Now be used in VoID contexts.
以上是内存溢出为你收集整理的iOS Xcode Swift自动完成破坏了吗?全部内容,希望文章能够帮你解决iOS Xcode Swift自动完成破坏了吗?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)