Swift構造体を定義するフレームワークがあります:
public struct CollectionTO {
var index: Order
var title: String
var description: String
}
ただし、ライブラリをインポートする別のプロジェクトの暗黙的なメンバーごとの初期化子を使用することはできません。エラーは、アクセス可能な初期化子がないため、「CollectionTO」は初期化できません。つまり、デフォルトの暗黙的なメンバー賢明な初期化子にpublicキーワードを与えていません。
var collection1 = CollectionTO(index: 1, title: "New Releases", description: "All the new releases")
次のように独自の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;
}
}
...しかし、誰かが知っている別の方法がある場合はむしろしたくないですか?
マニュアルの引用:
「構造型のデフォルトのメンバーごとの初期化子構造型のデフォルトのメンバーごとの初期化子は、構造の保存されたプロパティのいずれかがプライベートである場合、プライベートと見なされます。
上記のデフォルトの初期化子と同様に、別のモジュールで使用する際にメンバー構造の初期化子でパブリック構造体型を初期化できるようにするには、型定義の一部として自分でパブリックのメンバー単位の初期化子を提供する必要があります。」
"Swiftプログラミング言語" 、セクション "アクセス制御" からの抜粋。
少なくともデフォルトのメンバーごとのイニシャライザを使用することはできませんが、次の手順ですばやく作成できます。
Appleこれを変更し、煩わしさを軽減するまで、uは https://github.com/Bouke/SwiftInitializerGenerator (または他の)パブリック初期化子のためにこれを使用できます。 Xcodeバージョン10.0、High Sierra 10.13.6
完全なRubyデータモデルファイルを行ごとに解析し、パブリックアクセス修飾子、パブリックを追加するには、Swift gem ????メンバーごとのデフォルトの初期化子、およびその他のものを個別の自動生成出力Swiftファイルに追加します。
この宝石は Swift_republic と呼ばれます
このgemの実行については、次のドキュメントをご覧ください。