我有一个定义结构的快速框架:
public struct CollectionTO {
var index: Order
var title: String
var description: String
}
Run Code Online (Sandbox Code Playgroud)
但是,我似乎无法使用另一个导入库的项目中的隐式成员智能初始化程序.错误是'CollectionTO'无法初始化,因为它没有可访问的初始化程序.即它没有给出默认的隐式成员明智的初始化者public关键字.
var collection1 = CollectionTO(index: 1, title: "New Releases", description: "All the new releases")
Run Code Online (Sandbox Code Playgroud)
我必须添加我自己的init方法,如下所示:
public struct CollectionTO {
var index: Order
var title: String
var description: String
public init(index: Order, title: String, description: String) {
self.index = index;
self.title = title;
self.description = description;
}
}
Run Code Online (Sandbox Code Playgroud)
...但是如果还有其他人知道的话,我宁可不要这样做?
我正在尝试使用公共结构
public struct Person {
public let name: String
}
Run Code Online (Sandbox Code Playgroud)
在单元测试中(XCTest):
let person = Person(name: "Paul")
Run Code Online (Sandbox Code Playgroud)
测试构建失败,错误:
无法构造"Person",因为它没有可访问的初始值设定项.
为了构建测试,我需要为struct编写初始化器.感觉不对,因为结构已经有初始化器.有没有人有更好的解决方案?
Xcode版本6.1.1(6A2008a)