swift静态常量变量导致重新编译

时间:2016-09-02 03:03:19

标签: swift build compilation let

在swift中,如果我有一个全局常量,比如让一个文件中的host = XXX,那么这个常量的改变将导致重新编译所有项目文件

1 个答案:

答案 0 :(得分:0)

更正,更改该范围内的某些内容将导致重新编译。

就像你要更改特定类中的常量一样,该类将被重新编译。

如果您需要更改代码之外的值,例如host那么使用包含一些属性的plist文件可能会更好。

示例:

settings.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>host</key>
    <string>1.2.3.4</string>
</dict>
</plist>

example code to get value:

    guard let settingsFileURL = NSBundle.mainBundle().URLForResource("settings", withExtension: "plst") else {
        fatalError("unable to find plist file")
    }

    let settings = NSDictionary(contentsOfURL: settingsFileURL)

    guard let host = settings?.valueForKey("host") as? String else {
        fatalError("unable to get host value from plist file")
    }

    print("host = \(host)")