swift 中的 If 语句
If statements in swift
我是 swift 的新手,正在尝试理解我正在阅读的这段代码。有人可以解释设置私人搜索词典的 if 语句吗?另外,语句对 as [String : String] 是什么意思?我对这个术语感到困惑 as.Also 我不明白如果你声明一个常量而不比较它,if 语句是如何执行的? if 语句不应该检查某些东西然后如果是真的就执行下面的代码吗?
import Foundation
// delegate protocol enables Model to notify controller when data changes
protocol ModelDelegate {
func modelDataChanged()
}
// this will manage the saved searches
class Model {
// keys used for storing the app's data in app's NSUserDefaults
private let pairsKey = "TwitterSearchesKVPairs"
private let tagsKey = "TwitterSearchesKeyOrder"
private var searches: Dictionary <String, String> = [:] // stores tag-query pairs
private var tags: Array<String> = [] // stores tags in user-specified order
private let delegate: ModelDelegate // delegate is MasterViewController
// initializes the Model object aka constructor
init(delegate: ModelDelegate) {
self.delegate = delegate
// get the NSUserDefaults object for the app
let userDefaults = NSUserDefaults.standardUserDefaults()
// get Dictionary of the app's tag-query pairs
if let pairs = userDefaults.dictionaryForKey(pairsKey) {
self.searches = pairs as [String : String]
}
// get Array with the app's tag order
if let tags = userDefaults.arrayForKey(tagsKey) {
self.tags = tags as [String]
}
"if let" 用于有条件的解包,用于安全地解包可选值。 "as" 用于转换,但在这种情况下您需要使用 as? (有条件的铸造)。如果需要,您可以将两者结合在一个句子中:
// get Dictionary of the app's tag-query pairs
if let pairs = userDefaults.dictionaryForKey(pairsKey) {
self.searches = pairs as [String : String]
}
// get Array with the app's tag order
if let tags = userDefaults.arrayForKey(tagsKey) {
self.tags = tags as [String]
}
也可以写成:
if let searches = NSUserDefaults.standardUserDefaults().dictionaryForKey(pairsKey) as? [String : String] {
println(searches.description)
}
if let tags = NSUserDefaults.standardUserDefaults().arrayForKey(tagsKey) as? [String] {
println(tags.description)
}
// [String : String] means a Dictionary where its keys and values are String types
NSUserDefaults.standardUserDefaults().setObject(["book":"brown","car":"black"], forKey: "searches")
if let searches = NSUserDefaults.standardUserDefaults().dictionaryForKey("searches") as? [String : String] {
println(searches["book"]!) // "brown"
println(searches["car"]!) // "black"
}
我是 swift 的新手,正在尝试理解我正在阅读的这段代码。有人可以解释设置私人搜索词典的 if 语句吗?另外,语句对 as [String : String] 是什么意思?我对这个术语感到困惑 as.Also 我不明白如果你声明一个常量而不比较它,if 语句是如何执行的? if 语句不应该检查某些东西然后如果是真的就执行下面的代码吗?
import Foundation
// delegate protocol enables Model to notify controller when data changes
protocol ModelDelegate {
func modelDataChanged()
}
// this will manage the saved searches
class Model {
// keys used for storing the app's data in app's NSUserDefaults
private let pairsKey = "TwitterSearchesKVPairs"
private let tagsKey = "TwitterSearchesKeyOrder"
private var searches: Dictionary <String, String> = [:] // stores tag-query pairs
private var tags: Array<String> = [] // stores tags in user-specified order
private let delegate: ModelDelegate // delegate is MasterViewController
// initializes the Model object aka constructor
init(delegate: ModelDelegate) {
self.delegate = delegate
// get the NSUserDefaults object for the app
let userDefaults = NSUserDefaults.standardUserDefaults()
// get Dictionary of the app's tag-query pairs
if let pairs = userDefaults.dictionaryForKey(pairsKey) {
self.searches = pairs as [String : String]
}
// get Array with the app's tag order
if let tags = userDefaults.arrayForKey(tagsKey) {
self.tags = tags as [String]
}
"if let" 用于有条件的解包,用于安全地解包可选值。 "as" 用于转换,但在这种情况下您需要使用 as? (有条件的铸造)。如果需要,您可以将两者结合在一个句子中:
// get Dictionary of the app's tag-query pairs
if let pairs = userDefaults.dictionaryForKey(pairsKey) {
self.searches = pairs as [String : String]
}
// get Array with the app's tag order
if let tags = userDefaults.arrayForKey(tagsKey) {
self.tags = tags as [String]
}
也可以写成:
if let searches = NSUserDefaults.standardUserDefaults().dictionaryForKey(pairsKey) as? [String : String] {
println(searches.description)
}
if let tags = NSUserDefaults.standardUserDefaults().arrayForKey(tagsKey) as? [String] {
println(tags.description)
}
// [String : String] means a Dictionary where its keys and values are String types
NSUserDefaults.standardUserDefaults().setObject(["book":"brown","car":"black"], forKey: "searches")
if let searches = NSUserDefaults.standardUserDefaults().dictionaryForKey("searches") as? [String : String] {
println(searches["book"]!) // "brown"
println(searches["car"]!) // "black"
}