初始化程序错误不明确

时间:2018-02-06 14:55:13

标签: swift

我有这段代码:

public class Foo {    
    init?() {
        do {
            let sd = FileManager.default.temporaryDirectory.appendingPathComponent("bar")
            let ressourceValues = try sd.resourceValues(forKeys: [.isDirectoryKey])

            if let isDirectory = ressourceValues.isDirectory {
                if isDirectory {
                    self.something = sd
                } else {
                   return nil
                }
            } else {
                try FileManager.default.createDirectory(atPath: sd.path, withIntermediateDirectories: false, attributes: nil)
            }
        } catch {
            return nil
        }
    }

    public static let `default`: Foo? = Foo()
    var something: URL
}

我在init?行上收到此错误:

  

变量' self.something'在初始化之前使用

然而,我还没有看到我在初始化器中使用它的任何地方。

出了什么问题?

谢谢

1 个答案:

答案 0 :(得分:1)

由于something不是可选的,因此必须使用非零值初始化它。如果没有初始化init,您的something可能会成功。

相关问题