swift初始化程序是否可选,同时是非可选的?

时间:2015-10-14 11:16:14

标签: swift initializer

https://github.com/Hearst-DD/ObjectMapper要求我

 required init?(_ map: Map){
 }

我想实例化Foo()但它是Foo?输入不是Foo。

我添加了以下初始化程序,但没有用。

 override init() {
 }

2 个答案:

答案 0 :(得分:1)

拿起Foo ?,检查它是否有值,然后打开它。

let ff : Foo? = Foo()
if ff != nil {
    let f : Foo = f!
    // ...
}

或更简单:

let ff = Foo()
if let f = ff {
    // ...
}

答案 1 :(得分:0)

**编辑** 对不起,这是一个错误的电话..

我遇到以下代码的问题。

 var foo = Mapper<Foo>().map(jsonString)
 if foo != nil {
     return foo!
 }

 foo = Foo()
 return foo

我认为问题是当我声明var foo时它被声明为Foo?类型且foo = Foo()仍为Foo?

所以我将代码更改为

 var foo = Mapper<Foo>().map(jsonString)
 if foo != nil {
     return foo!
 }

 return Foo()

似乎有效。