LoginSignup
0
1

More than 5 years have passed since last update.

Property must be declared private because its type uses a private type

Posted at

過去に出会ったエラーメッセージとその対処方法備忘録

環境

  • 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
}
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1