swift - 错误 : Cannot assign to '...' in 'self'

标签 swift initialization uikit init

我有这个代码

import UIKit

class SliderControllerView: UIView{
    private let type: ControlType!
    private let label: UILabel!
    private let slider: UISlider!
    private weak var delegate: SliderControllerDelegate?

    private let defaults: SliderDefaults!

    convenience init(type: ControlType, defaults: SliderDefaults, delegate: SliderControllerDelegate?) {

        self.init()

        self.type = type
        self.delegate = delegate
        self.defaults = defaults

        setTranslatesAutoresizingMaskIntoConstraints(false)

        label = UILabel()
        configureLabel()

        slider = UISlider()
        configureSlider(slider)

        SliderDefaults.set(slider, defaults: defaults)

        if let valueFromDetauls = userDefaultsValue {
            slider.value = Float(valueFromDetauls)
        }

        saveValueInUserDefaults()
        updateLabel()
    }

错误信息:

  1. 无法分配给“self”中的“type”
  2. 无法分配给“self”中的“defaults”
  3. 无法分配给“self”中的“label”
  4. 无法分配给“self”中的“slider”

我做什么? 谢谢!

最佳答案

我对代码做了一些修改,因此它可以编译,尽管它确实改变了一些含义。

class SliderControllerView: UIView {

    // Converted "let" to "var"
    private var type: ControlType!
    private var label: UILabel!
    private var slider: UISlider!
    private weak var delegate: SliderControllerDelegate?

    private var defaults: SliderDefaults!

    // Added frame to init
    convenience init(frame: CGRect, type: ControlType, defaults: SliderDefaults, delegate: SliderControllerDelegate?) {

        // Call designated init(frame: CGRect) for UIView
        self.init(frame: frame)
        self.type = type
        self.delegate = delegate
        self.defaults = defaults

        setTranslatesAutoresizingMaskIntoConstraints(false)

        label = UILabel()
        configureLabel()

        slider = UISlider()
        configureSlider(slider)

        SliderDefaults.set(slider, defaults: defaults)

        if let valueFromDetauls = userDefaultsValue {
            slider.value = Float(valueFromDetauls)
        }

        saveValueInUserDefaults()
        updateLabel()
}

关于swift - 错误 : Cannot assign to '...' in 'self' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29660817/

相关文章:

Java变量可能没有被初始化?

iphone - 为什么 UITextField 的窗口为零?

ios - 更新支持 UITableView 的 NSArray 中的值

ios - 如何快速获取日期的时间

swift - 一个函数返回另一个函数的好例子是什么?

带参数的 Java Webstart

iphone - 如何在 UITableViewCell 中获取透明附件 View ? (带屏幕截图)

ios - 将可视格式的约束转换为 NSLayoutAnchor API

objective-c - NSString(或字符串)的长度是否影响 isEqualToString 的性能 : (or ==)?

c++ - 将类中的所有 double 值初始化为零