【发布时间】:2020-05-02 21:28:42
【问题描述】:
所以,我正在使用 Swift 进行编码,并且我创建了一个名为 User 的结构。它有四类特征——姓名、电子邮件、关注者数量和活动状态。我可以毫无问题地附加我创建的结构变量的值,只要它们是字符串或整数、字典等。它不会让我附加 Bool 的值。我最初将其设置为“真”,但我想在初始化后将其附加为“假”。我收到错误消息:“'Bool' 类型的值没有成员 'append'”。我知道我不允许以与说 User.name.append("Tim") 相同的方式附加它,但我不明白我实际上是如何可以附加的它。谷歌没有帮助,在 SO 中搜索也没有产生任何值得注意的结果,Apple 关于 Structs 的文档显示他们在开始时使用字符串和布尔值并附加字符串但不附加布尔值在他们的解释中设置了类似的值。我无法想象这是不可能的,因为事情总是从真实状态变为虚假状态,具体取决于情况。如果我删除下面的行,它编译得很好。
为了清楚起见,userTwo.isAcctive.append(false) 是我的错误所在。
任何帮助将不胜感激!
struct User {
let name: String
let email: String?
var followers: Int
var isActive: Bool
init(name: String, email: String, followers: Int, isActive: Bool){
self.name = name
self.email = email
self.followers = followers
self.isActive = isActive
}
func logStatus(){
if isActive == true{
print("\(name) is working hard.")
} else {
print("\(name) has left the earth.")
}
}
}
var userOne = User(name: "Richard", email:("") , followers: 0, isActive: false)
var userTwo = User(name: "Elon", email:("elon@tesla.com") , followers: 2100, isActive: true)
print(userTwo.isActive)
userTwo.isActive.append(false)
userOne.logStatus()
userTwo.logStatus()
【问题讨论】:
-
你不想“追加”它——你想改变它。只需说
userTwo.isActive = false就可以完成这项工作。原始类型没有附加历史记录。 -
它不是使用附加函数的数组。它就像一个具有 TRUE 或 FALSE 值的原始元素。只需使用 userTwo.isActive = false。
.append用于数组、字符串等 -
这是有道理的。我现在可以前进了。非常感谢!
标签: swift struct boolean append