我有一个类,它包含一个名称、一个图像、名称的虚线形式和名称的长度。例如,我可以有“狗”、一个狗的图像、“---"和名称长度3。
我只想为每个对象设置名称和图片,并自动设置dashName
和nameLength
。
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
}
}
}
问题是这样的错误:““无法通过下标赋值:subscript is get-only”和另一个错误,显示:“下标不可用:不能为字符串添加Int下标”
3条答案
按热度按时间a6b3iqyw1#
因为
String
的下标运算符是get-only,所以请改用map
方法,如下所示:tjjdgumg2#
和之前的mentioned一样,Swift的
String
类是其他语言所称的StringBuilder
类,出于性能原因,Swift不提供按索引设置字符;如果您不关心性能,一个简单的解决方案可能是:或作为扩展名:
注意上面需要如何调用
index(...)
方法来将整数转换为实际索引!?看起来Swift像链表一样实现String
,其中append(...)
确实很快,但即使是找到索引(不对它做任何事情)也是一个线性时间操作(并且基于连接计数会变慢)。ru9i0ody3#
String
的下标操作符是get-only,这意味着只能使用它读取字符串,而必须使用其他操作符写入可变的String。您可以解决此问题,并通过在
name
上使用map
函数来清理代码