无法通过下标分配给Swift String

时间:2017-11-22 12:17:58

标签: swift string subscript

我有一个类,其中包含名称,图像,名称的虚线形式以及名称的长度。例如,我可以拥有“狗”,狗的形象,“---”,名称长度为3。

我只想为每个对象设置名称和图片,并自动设置dashNamenameLength

class Answer {
    var name = "name"
    var image: UIImage?
    var dashName = "name"
    var nameLength = 0

    init(){

        var a = 0
        nameLength = name.characters.count

        while a <= nameLength {
            if (name[a] == " ") {dashName[a] = " "}
            else {dashName[a] = "-"}
            a += 1
        }
    }
}

问题是错误说:“不能通过下标分配:下标是get-only”而另一个错误说:“下标不可用:不能使用Int下标String”

2 个答案:

答案 0 :(得分:2)

编辑:倒置

for item in "${newArray[@]}"; do
    printf '%s\n' "$item"
done

答案 1 :(得分:1)

String的下标运算符是get-only,这意味着你只能使用它来读取字符串,并且必须使用其他东西来写入可变字符串。

您可以使用map

上的name功能解决此问题并清理代码

Swift 4

class Answer {
    var name = "name"
    var image: UIImage?
    var dashName = "name"
    var nameLength = 0

    init()
    {
        nameLength = name.count
        dashName = name.map { $0 == " " ? " " : "-" }.joined()
    }
}

Swift 3

class Answer {
    var name = "name"
    var image: UIImage?
    var dashName = "name"
    var nameLength = 0

    init()
    {
        nameLength = name.characters.count
        dashName = name.characters.map { $0 == " " ? String(" ") : String("-") }.joined()
    }
}