ためhttps://www.natashatherobot.com/swift-enum-no-cases/を参照してくださいは、定数ファイルを使用していないわずかに異なる解決策が、PLISTを使用してシングルトンクラスです。これにより、すべてのアプリケーションで1つの設定ファイルを使用できるようになり、各アプリケーションにplistファイルが必要になります。
次の内容で「CustomSettings.plist」と呼ばれるプロジェクトにplistを追加する場合:
今
public class Settings {
static let instance = Settings()
public let companyName: String
public let primaryColor: UIColor
private init() {
let path = Bundle.main.path(forResource: "CustomSettings", ofType: "plist")!
let settingsDict = NSDictionary(contentsOfFile: path) as! [String: AnyObject]
companyName = settingsDict["CompanyName"] as! String
let colorString = settingsDict["PrimaryColor"] as! String
primaryColor = Settings.hexStringToUIColor(hex: colorString)
}
// Taken from: http://stackoverflow.com/questions/24263007/how-to-use-hex-colour-values-in-swift-ios
private static func hexStringToUIColor (hex:String) -> UIColor {
var cString:String = hex.trimmingCharacters(in: .whitespacesAndNewlines).uppercased()
if (cString.hasPrefix("#")) {
cString.remove(at: cString.startIndex)
}
if ((cString.characters.count) != 6) {
return UIColor.gray
}
var rgbValue:UInt32 = 0
Scanner(string: cString).scanHexInt32(&rgbValue)
return UIColor(
red: CGFloat((rgbValue & 0xFF0000) >> 16)/255.0,
green: CGFloat((rgbValue & 0x00FF00) >> 8)/255.0,
blue: CGFloat(rgbValue & 0x0000FF)/255.0,
alpha: CGFloat(1.0)
)
}
}
:
<?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>PrimaryColor</key>
<string>cc3333</string>
<key>CompanyName</key>
<string>Company1</string>
</dict>
</plist>
を次のコードを使用して設定と呼ばれる新しいファイルを作成しますフレームワークに含めることができる設定ファイルが1つだけ必要です。そして、各アプリケーションはカスタムコンテンツを含むCustomSettings plistファイルを必要とします。次のようにあなたはそれを使用することができます。
print (Settings.instance.companyName)
view.backgroundColor = Settings.instance.primaryColor
そして別のファイルに構造体を追加できますか?私は後に私のコードのより良いメンテナンスのためにすべての定数で区切られたファイルを持っていたいと思います。 –
はい、@ Error404では、新しいファイルを作成し、そこからアクセスするすべてのターゲットにファイルを追加するだけです。 – Marc
@Marc私はあなたが構造ファイルの名前でインポートを使用することを意味するのでしょうか? –