iOS:使用Swift创建对象类

骑自行车更好

我为对象City创建了这个类

class City: NSObject {

    var _name:String = ""
    var name:String {
        get {
            return _name
        }
        set (newVal) {
            _name = newVal
        }
    }
}

然后,当我创建对象时,我将执行以下操作:

var city:City!

city.name = "London" //crash here

println("name city is\(city.name)");

当我用消息“致命错误:解开可选值时意外发现nil”设置名称时,它崩溃

安东尼奥

这实际上不是答案(请参阅其他答案以获取解决方案,例如@Greg和@zelib的答案),而是尝试修复我在您的代码中看到的一些错误

  1. 无需创建计算+存储属性(除非您有理由这样做):

    class City: NSObject {
        var name: String = ""
    }
    
  2. 如果您继承自NSObject,则会自动失去所有快速功能-避免使用它(除非您有理由这么做)

    class City {
        var name: String = ""
    }
    
  3. 您正在使用空字符串作为值的缺失-swift为此提供了可选选项

    class City {
        var name: String?
    }
    
  4. 除了3.之外,没有名称的城市也没有多大意义,因此您可能希望每个实例都有一个名称。使用非可选属性和初始化程序:

    class City {
        var name: String
        init(name: String) {
            self.name = name
        }
    }
    
  5. 避免隐式展开的可选(除非您有这样做的理由):

    var city: City
    

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章