小编sdd*_*sma的帖子

Swift中的低价选项:as?输入,或者!类型?

在Swift中给出以下内容:

var optionalString: String?
let dict = NSDictionary()
Run Code Online (Sandbox Code Playgroud)

以下两个陈述之间的实际区别是什么:

optionalString = dict.objectForKey("SomeKey") as? String
Run Code Online (Sandbox Code Playgroud)

VS

optionalString = dict.objectForKey("SomeKey") as! String?
Run Code Online (Sandbox Code Playgroud)

downcast optional optional-variables swift

91
推荐指数
5
解决办法
3万
查看次数

在Swift中调用NSObject子类的初始化程序中的super.init()

我正在Swift中构建一个iOS应用程序,并利用Apple提供的Lister示例项目.

Lister使用两个模型对象:List和ListItem.我发现super.init()即使它们是NSObject的子类,它们都不会调用它们的初始化器.

但是,在Lister的Objective-C版本中,两个模型对象(AAPLList和AAPLListItem)都会调用[super init].

斯威夫特编程语言中明确指出,"指定的初始化程序必须调用从他们的直接超类的指定初始化方法."(初始化程序链接在初始化的第1条)

这里发生了什么?为什么这是一个例外,如果你不应该总是在子类中调用super.init(),那么适用哪些规则?

subclass nsobject subclassing ios swift

14
推荐指数
1
解决办法
3649
查看次数