相关疑难解决方法(0)

我如何默认公开Swift中结构的成员初始化器?

我有一个定义结构的快速框架:

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)

...但是如果还有其他人知道的话,我宁可不要这样做?

struct initialization swift

144
推荐指数
2
解决办法
2万
查看次数

为什么我需要在Swift中为struct编写初始化程序才能在单元测试中使用它?

我正在尝试使用公共结构

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)

xcode ios swift

17
推荐指数
2
解决办法
4348
查看次数

标签 统计

swift ×2

initialization ×1

ios ×1

struct ×1

xcode ×1