先前未调用方法时的Swift错误

时间:2016-03-28 13:04:51

标签: swift

您好我想问一下,当您使用需要先调用另一个方法的类方法时,是否有任何方法可以在编译时在xCode上出错?

我解释说:

class MyClass {
  func initializeClass(){
  }
  func loadConfig() {

  }
}

var myClass = MyClass()

myClass.loadConfig() - >编码时丢失错误,与您未实现所需协议功能时的错误相同

正确的方式:

myClass.initializeClass().loadConfig()

2 个答案:

答案 0 :(得分:3)

解决这种情况的一种方法是使用Proxy Design Pattern。不要将这两种方法都添加到MyClass,而是loadConfig() MyClassInitProxy的实例方法:

public class MyClass {
    public class MyClassInitProxy {
        let owner:MyClass 
        public func loadConfig() {
            // Do the config work using owner to access MyClass
        }
        private init(owner:MyClass) {
            self.owner = owner
        }
    }
    public func initializeClass() -> MyClassInitProxy {
        // Do preparation, then
        return MyClassInitProxy(owner:self)
    }
}

现在,人们拨打loadConfig的唯一方法是通过MyClassInitProxy电话获取initializeClass()

var myClass = MyClass()
myClass.initializeClass().loadConfig()

答案 1 :(得分:0)

简短的回答是 - 不,使用这种方法你不会有编译时错误。

但是,如果您希望任何人在没有准备配置的情况下实例化您的类,那么只需要将配置作为初始化程序中的参数。 E.g。

class MyClass {
    init(config: YourConfigType) {
        // do something with the config parameter
    }
}
... read config from somewhere and create config variable ...
let x = MyClass(config: config)

然后你有一个"编译时错误"每当有人想要使用你的类而没有最初的配置设置。