過去に出会ったエラーメッセージとその対処方法備忘録
環境
- XCode
- Swift4.2
エラーメッセージ
Property must be declared private because its type uses a private type
エラー発生コード
class test
{
private enum enums
{
case hoge,huga,piyo
}
var foo:enums = .hoge //Error
}
原因と対処方法
原因
privateなenum型を利用して定義した変数がpublicで定義されており、公開範囲がちぐはぐなため
このクラスのfoo変数を外部から参照した時、enums型で編集評価したいが、外部からenums型が見えないために、正しく操作できないことを考えると当然のエラー
対処方法
変数とenum型の公開範囲を合わせる
この場合、enumをあえてprivateで定義して非公開にしていることを考えると、単純にenum型を公開するのは望ましくない可能性が高い
enum型を公開にする場合は一度よく考えてから行う必要がある
対処済みコード例1
クラス内でしか利用しないはずのprivateなenum型で宣言した変数は、外部公開する必要がないはずなので、変数の公開範囲もprivateのみに変更する
class test
{
private enum enums
{
case hoge,huga,piyo
}
private var foo:enums = .hoge //Edit
}
対処済みコード例2
変数fooを外部に公開する必要がある場合は、Enumの公開範囲を変数に合わせる
class test
{
enum enums //Edit
{
case hoge,huga,piyo
}
var foo:enums = .hoge
}