Swift:为什么我需要在声明中解包非可选变量

时间:2015-09-29 07:29:58

标签: swift syntax optional forced-unwrapping

我无法理解为什么我需要"强行打开"在我的测试中输入变量类型。

让我举个例子来说明一点:

class testSomething: XCTestCase {

  var mockService: MockService!

  override func setUp() {
    mockService = MockService()
  }
  ...

因此,我的目标显然是每次运行测试时都要创建一个新的模拟服务实例。我只是不明白为什么我需要将此变量声明为MockService!类型。类型之后的感叹号在这种情况下真正意味着什么?

请注意,当我声明mockService: MockService Xcode抱怨我的测试类没有初始值设定项时

1 个答案:

答案 0 :(得分:1)

在声明行

中初始化非可选变量
var mockService = MockService()

init()方法

var mockService : MockService

init() {
  mockService = MockService()
}

如果无法做到这一点,请将变量声明为强制解包,并确保变量在使用时不是nil。然后它的行为就像一个非可选的。