0

Series一時的な属性を持つCoreDataエンティティがありindexCurrentます。外部クラスがアクセスするとき、値を返す前にの値を更新する必要があるindexCurrentかどうかを確認するために使用できる引数を送信するようにします。indexCurrentしたがって、私はindexCurrentプライベート変数として宣言し、argを使用した特別なメソッドを介してのみ外部アクセスを許可します。

ただし、コンパイラは「メソッドが見つかりません」という警告を発行しますが、外部クラスがとの両方を呼び出すことができindexCurrentsetindexCurrent:この障害のあるコードは完全に成功して実行されます。

Seriesインターフェースは次のとおりです。

@interface Series : NSManagedObject {
@private
NSNumber *indexCurrent;  
}

indexCurrentはプロパティ化されておらず、実装ファイルで動的として宣言されておらず、書き込みindexCurrentsetindexCurrent:アクセサーもありません。

私は何が間違っているのですか?どうすればindexCurrentプライベートにすることができますか?

4

1 に答える 1

2

@dynamic によってコードが生成されることはありません。Core Data は、@dynamic を使用するかどうかに関係なく、プロパティ アクセサーのコードを生成します。@dynamic は、コードが生成されることをコンパイラに通知するだけなので、メソッドの欠落について警告する必要はありません。そのため、警告は表示されますが、実行時エラーは発生しません。

インスタンス変数の @private はあまり効果がありません。デフォルトは @protected です。これは、外部のクラスがそれにアクセスできず、クラス自体とサブクラスのみがアクセスできることを意味します。いずれにせよ、デフォルトの Core Data アクセサーはインスタンス変数を使用しません。

あなたが望むことをする方法がわかりません。

于 2011-10-14T17:47:12.800 に答える