为了账号安全,请及时绑定邮箱和手机立即绑定

NSCalendar? does not hava a member named "components"

你好老师,我这里编译报错:NSCalendar? does not hava a member named "components"

github挂了。。上不去

正在回答

6 回答

let components = gregorian?.components(NSCalendarUnit.Year, fromDate: birthday.date, toDate: now, options: NSCalendarOptions(rawValue: 0))

这样写,就编译通过了

0 回复 有任何疑惑可以回复我~
let component=NSCalendar.currentCalendar().components(.YearCalendarUnit, fromDate: birthday.date, toDate: now,options: NSCalendarOptions(0))

这样写你就可以正确的得到你想要的结果了,视频里的代码有点老!

0 回复 有任何疑惑可以回复我~

查了一下:?是这个意思吧


可选链表达式(Optional-Chaining Expression)

可选链表达式由目标表达式 + '?' 组成,形式如下:

expression?

后缀'?' 返回目标表达式的值,把它做为可选的参数传递给后续的表达式

如果某个后缀表达式包含了可选链表达式,那么它的执行过程就比较特殊: 首先先判断该可选链表达式的值,如果是 nil, 整个后缀表达式都返回 nil, 如果该可选链的值不是nil, 则正常返回该后缀表达式的值(依次执行它的各个子表达式)。在这两种情况下,该后缀表达式仍然是一个optional type(In either case, the value of the postfix expression is still of an optional type)

如果某个"后缀表达式"的"子表达式"中包含了"可选链表达式",那么只有最外层的表达式返回的才是一个optional type. 例如,在下面的例子中, 如果c 不是nil, 那么 c?.property.performAction() 这句代码在执行时,就会先获得c 的property方法,然后调用 performAction()方法。 然后对于 "c?.property.performAction()" 这个整体,它的返回值是一个optional type.

var c: SomeClass?
var result: Bool? = c?.property.performAction()

如果不使用可选链表达式,那么 上面例子的代码跟下面例子等价:

if let unwrappedC = c {
   result = unwrappedC.property.performAction()
}

可选链表达式的语法

optional-chaining-expression → postfix-expression­?­


0 回复 有任何疑惑可以回复我~

let components = gregorian?.components(NSCalendarUnit.YearCalendarUnit, fromDate: birthDate.date, toDate: now, options: NSCalendarOptions(0))

let age = components?.year


多了2个问号就好了,但是原因我也不懂。。。

0 回复 有任何疑惑可以回复我~

我也遇到了同样的现象。在

/* NSCalendar.h

Copyright (c) 2004-2014, Apple Inc. All rights reserved.

*/

文件里明明是有

func components(unitFlags: NSCalendarUnit, fromDate startingDate: NSDate, toDate resultDate: NSDate, options opts: NSCalendarOptions) -> NSDateComponents

0 回复 有任何疑惑可以回复我~

这是代码和报错信息,549904550001df2005000022.jpg 先谢谢老师

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
使用Swift开发iOS8 App实战
  • 参与学习       62613    人
  • 解答问题       541    个

通过苹果最新Swift语言开发iOSApp,从零开始学习iOS的开发

进入课程

NSCalendar? does not hava a member named "components"

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信