当前位置: 首页 > 面试题库 >

iOS Xcode Swift自动完成功能坏了吗?

罗华翰
2023-03-14
问题内容

我使用的Swift很少,但是来自Objective C,关于Swift的一些事情就是PITA。

在iOS编程中,我们有animateWithDuration:方法,它是UIView的一部分。

因此,我尝试使用Xcode的自动完成功能并开始输入:

UIView.animateWith

自动完成显示:

UIView.animateWithDuration(duration: NSTimeInterval, animations: () -> Void)

然后,我进入“持续时间”字段,然后输入数字:

UIView.animateWithDuration(0.5, animations: () -> Void)

然后,我再次跳到动画块,然后按Enter键,就像我通常在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然后给我错误的时候:

无法使用类型为’(FloatLiteralConvertible,animations:()->
Void)’的参数列表调用’animateWithDuration’

我不明白 那就是Xcode为我生成的自动完成代码,为什么会给我一个错误?

我注意到是否做了一个简单的声明,例如:

UIView.animateWithDuration(0.5, animations: { () -> Void in
    var num = 1 + 1;
})

它不会给我任何错误。

有任何想法吗?


问题答案:

从“通过可选链接进行调用的方法”中:

通过可选链接设置属性的任何尝试都会返回type的值Void?,这使您可以与nil进行比较以查看是否成功设置了属性…

因此表达式的类型

self.customView?.transform = CGAffineTransformMakeTranslation(0.0, 0.0)

Void?(可选的Void)。如果闭包仅包含一个 表达式 ,则该表达式将自动作为 返回值
。该错误消息颇具误导性,但其来源与Void?有所不同Void

添加显式return语句可以解决此问题:

UIView.animateWithDuration(0.5, animations: { () -> Void in
    self.customView?.transform = CGAffineTransformMakeTranslation(0.0, 0.0)
    return
})

更新:return使用Swift 1.2(Xcode 6.3)不再需要添加显式语句。从测试版发行说明中:

现在可以在Void上下文中使用带有非Void返回类型的带注释的单表达式闭包。



 类似资料:
  • 问题内容: 我正在尝试实现自动补全功能,但是找不到在Swift中可用的示例。下面,我打算转换Ray Wenderlich的自动完成教程 和2010年的示例代码。最后,代码进行了编译,但是没有显示包含可能完成的表格,而且我没有经验来了解为什么它未被隐藏shouldChangeCharactersInRange。 问题答案: 用下面的内容替换您的函数内容。希望对您有帮助。

  • 我想在表单中使用jQuery.AutoComplete.js插件进行输入。我想在客户端进行搜索,不能使用Ajax。但我不想在数组中使用一些简单的基于“包含”的搜索算法。我要做的是用javascript编写一个自定义搜索函数,对结果进行搜索和排序。这可能吗?怎么可能? 谢谢你抽出时间。

  • 问题内容: 我该如何做出反应渲染呢? 问题答案: 大写字母“ C” 。在React文档中提到了这一点: https://facebook.github.io/react/docs/tags-and- attributes.html

  • 我刚刚安装了 PyCharm 社区版 3.4.1,并尝试在其中制作一个简单的 pygame 项目。我发现代码完成以一种奇怪的方式运行。在这种情况下: 当我键入事件时会立即显示带有方法的完成弹出窗口。但在第二种情况下: 弹出窗口仅包含方法。 如何学习自动完成工具来更深入地查看库?

  • 问题内容: 遵循了如何安装GoClipse 的说明。 我写的本地包,内置的东西或GAE的东西都没有发生任何自动完成的事情(按照Wiki的说明,我已将Go src下载到SDK文件夹中)。 我是否可以检查任何设置以确保设置正确?自动完成功能应该在当前版本中工作吗? 问题答案: 正如您链接到的带有AppEngine的GoClipse文章所述: 我们假定读者拥有在其Eclipse环境中运行的GoClips

  • 本文向大家介绍jQuery实现用户输入自动完成功能,包括了jQuery实现用户输入自动完成功能的使用技巧和注意事项,需要的朋友参考一下 利用jQuery UI中Auto-complete插件实现输入自动完成功能,大家在使用诸如淘宝、京东等电商平台搜索商品时,往往只要输入商品的一些特殊字符,就可以显示出和该字符相近的列表菜单,用户使用鼠标或者键盘方向键就可以快速选择,实现了很好的用户体验。 1.最简