AJ9*_*AJ9 3 ios swift xcode7 swift2 xcode7-beta5
所以我刚试了一下我认为简单的操作 - 给NSDate添加一天:
继这个答案也SO它提供了以下解决方案,而不是我想要什么(但具有相同的逻辑)不工作:
let twoDaysAgo = calendar.dateByAddingUnit(NSCalendarUnit.Day, value: -2, toDate: NSDate(), options: nil)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息:
"Could not find an overload for 'NSDate.init' that accepts the supplied arguments
Run Code Online (Sandbox Code Playgroud)
删除NSDate()
参数后形成这个:
let d = NSDate()
let twoDaysAgo = calendar.dateByAddingUnit(NSCalendarUnit.Day, value: -2, toDate: d, options: nil)
Run Code Online (Sandbox Code Playgroud)
我现在得到一个不同的错误:
'Int' is not convertible to 'IntegerListeralConvertible'
Run Code Online (Sandbox Code Playgroud)
在搜索了各种出口之后,事实证明错误在最后的参数中options:nil
- 现在必须传递参数.
为什么会这样?
NSHipster声明:
components(_:fromDateComponents:toDateComponents:options :):返回两个NSDateComponents实例之间的差异.该方法将使用未设置的任何组件的基值,因此至少为每个参数提供年份.options参数未使用; 传递nil/0.
虽然Apple没有明确说明论点不能为零
计算选项.有关可能的值,请参阅"日历选项".如果指定"wrap"选项(NSWrapCalendarComponents),则指定的组件会递增并在溢出时回绕到零/ 1,但不会导致更高的单位递增.当wrap选项为false时,单元中的溢出会进入更高的单位,如典型的添加.
这是一个XCode 7 beta错误吗?Swift 2中的新功能?
dateByAddingUnit:toDate:options
Swift 1.2及更高版本的完整签名是
func dateByAddingUnit(unit: NSCalendarUnit, value: Int, toDate date: NSDate, options: NSCalendarOptions) -> NSDate?
Run Code Online (Sandbox Code Playgroud)
该options
类型显然是非可选类型,因此不能nil
.
在Swift 1.2及更高版本中,您可以使用类型的通用初始值设定项传递空值,但类型必须是不同的
NSCalendarOptions()
Run Code Online (Sandbox Code Playgroud)
在Swift进化过程中有很多变化,所以NSHipster可能会引用Swift的早期版本
归档时间: |
|
查看次数: |
4219 次 |
最近记录: |