我在https://stackoverflow.com/questions/29056111/converting-a-string-back-to-an-array-in-swift中发布了这个问题,但以下是我通常要做的事情。结果不匹配:
var str = "Hello, playground"
struct myStruct {
var name: String? = ""
}
let myArray: [myStruct] = [myStruct(name: "Gary")]
var userName = "Gary"
let instanceofStruct = myStruct()
if userName == instanceofStruct.name {
println("match")
}
else {
println("no match")
}
使用'=='而不是'==='进行比较Strings
。
来自Swift编程语言:
请注意,“等于”(由三个等号或===表示)与“等于”(由两个等号或==表示)并不意味着同一件事:
•“与……相同”表示类类型的两个常量或变量引用完全相同的类实例。
•“等于”是指两个实例的值被视为“相等”或“等效”,对于某些适当的含义,由类型设计者定义为“相等”。
请注意,这String
是一个Struct
,它是一个值类型,而不是一个类。
var userName = "Gary"
let instanceofStruct = myStruct() // instanceofStruct.name is "" here
if userName == instanceofStruct.name { // "Gary" != ""
println("match")
}
else {
println("no match")
}
您可能想做的是:
let myArray: [myStruct] = [myStruct(name: "Gary")]
var userName = "Gary"
var structireWithNameGary: myStruct? = nil
for structure in myArray {
if userName == structure.name {
println("match")
structireWithNameGary = structure
break
}
}
if structireWithNameGary != nil {
println("found a stucture with name Gary in myArray")
} else {
println("couldn't find a stucture with name Gary in myArray")
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句