Bha*_*ain 9 struct model initialization ios swift
更新: 使用结构而不是类.结构在很多方面都有更好的自己的初始化器.
这是我的模特课.是否可以init自动创建方法?每次我必须逐个初始化所有变量,这需要花费大量时间.
class Profile {
var id: String
var name: String
var image: String
init(id: String, name: String, image: String) {
self.id = id
self.name = name
self.image = image
}
}
Run Code Online (Sandbox Code Playgroud)
我希望self.id = id和其他变量自动初始化.
J. *_*Doe 22
我们可以使用以下工具来做到这一点:
xCode Version 10.1 (10B61)
Toolchain: Swift Development Snapshot 2018-12-25 (a) // Not sure if the toolchain matters.
Run Code Online (Sandbox Code Playgroud)
考虑下面的类(或结构如果关键字临时更改struct到class后重构设置回struct):
class MyClass {
let myIntProperty: Int
let myStringProperty: String
let myOptionalStringProperty: String?
let myForcedUnwrappedOptionalStringProperty: String!
}
Run Code Online (Sandbox Code Playgroud)
前往xCode和:
以上步骤如下所示:
片刻之后,xCode生成了该初始化器:
internal init(myIntProperty: Int, myStringProperty: String, myOptionalStringProperty: String?, myForcedUnwrappedOptionalStringProperty: String?) {
self.myIntProperty = myIntProperty
self.myStringProperty = myStringProperty
self.myOptionalStringProperty = myOptionalStringProperty
self.myForcedUnwrappedOptionalStringProperty = myForcedUnwrappedOptionalStringProperty
}
Run Code Online (Sandbox Code Playgroud)
Mor*_*mer 13
你不能 即使使用struct,由于struct'init'的内部访问级别,您在处理模块时也可能陷入困境。
但是,有一个方便的Xcode插件:https : //github.com/rjoudrey/swift-init-generator或https://github.com/Bouke/SwiftInitializerGenerator
感谢插件的创造者。
更新资料
仅class当且仅当您具有uninitialized属性时:Xcode将允许在以下位置生成初始化程序
右键单击>重构>“生成成员初始化”
注意:如果您已经初始化了类属性,则不会出现“ Generate Memberwise Initialization”

不,课程没有这样的功能.但是,如果您将其设计为a struct,则可以免费获得成员初始化程序 - 假设您没有自己定义其他初始化程序.
例如:
struct Point {
var x: Float
var y: Float
}
...
var p = Point(x: 1, y: 2)
Run Code Online (Sandbox Code Playgroud)
来自Swift编程语言书:
如果结构类型没有定义任何自己的自定义初始值设定项,它们会自动接收成员初始值设定项.与默认初始值设定项不同,即使结构存储的属性没有默认值,该结构也会接收成员初始值设定项.
成员初始化程序是初始化新结构实例的成员属性的简便方法.可以通过名称将新实例的属性的初始值传递给成员初始值设定项.