无法分配给属性:“xxxx”是一个只能获取的属性
Posted
技术标签:
【中文标题】无法分配给属性:“xxxx”是一个只能获取的属性【英文标题】:Cannot assign to property: 'xxxx' is a get-only property 【发布时间】:2017-10-21 09:47:38 【问题描述】:我正在使用计算属性来获取我的books
数组中的最后一本书。但是,我似乎无法使用此属性直接设置一本书的 position
属性,如下所示:
struct Book
var position: CGPoint?
class ViewController: UIViewController
var books = [Book]()
var currentBook: Book
return books[books.count - 1]
func setup()
// Compiler Error: Cannot assign to property: 'currentBook' is a get-only property
currentBook.position = CGPoint.zero
以下工作,但我希望它更具可读性和单行。
books[books.count - 1].position = CGPoint.zero
我可以使用函数返回当前书籍,但使用属性会更简洁。还有其他方法吗?
【问题讨论】:
【参考方案1】:发生错误是因为您没有告诉编译器如果currentBook
的值发生了突变,该怎么办。编译器假定它是不可变的。
只需添加一个setter,以便编译器在您设置值时知道该做什么:
var currentBook: Book
get return books[books.count - 1]
set books[books.count - 1] = newValue
或者,考虑使用books.last!
:
books.last!.position = CGPoint.zero
【讨论】:
以上是关于无法分配给属性:“xxxx”是一个只能获取的属性的主要内容,如果未能解决你的问题,请参考以下文章
无法分配给属性:“值”是一个只能获取的属性 RxSwift -
无法分配给属性“tabBarController”是一个只能获取的属性