【问题标题】:Accessing a string inside a struct inside an array in Swift在 Swift 中访问数组内的结构内的字符串
【发布时间】:2015-03-15 13:10:02
【问题描述】:

我发布了这个问题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")
}

【问题讨论】:

    标签: arrays swift struct


    【解决方案1】:

    使用 '==' 而不是 '===' 来比较 Strings

    来自The Swift Programming Language

    请注意,“等同于”(由三个等号或 === 表示) 与“等于”的意思不同(用两个等于表示 符号,或 ==):

    • “相同”是指类类型的两个常量或变量 引用完全相同的类实例。

    • “等于”表示两个实例被视为“相等”或 “相等”的价值,对于“相等”的某些适当含义,如 由类型的设计者定义。

    注意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")
    }
    

    【讨论】:

    • 但我不知道调用的是哪个数组,这是用户的选择,这就是为什么我需要将选择的变量(字符串)与我数组中的相应结构相匹配。
    • 对不起,我不明白你想要达到什么目的。
    • 我更新了我的答案,但如果它没有帮助,你应该尝试更好地表达你的目标。
    • 了不起的人...我认为 for in 循环可能是必要的,但不确定如何构建它。谢谢!!
    • Np。我强烈建议您阅读Swfit Book。这可能需要你一些时间,但从经验来看,它会让你成为一个更好的 Swift 程序员。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-18
    • 2020-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多