2016-05-12 5 views
0

swiftを使用してNSManagedObjectサブクラスを生成すると、プロパティタイプはすべて@NSManagedとなり、それらを見ることはできません。これは、プロパティを更新すると頻繁に他のプロパティを更新する必要があるため、Cocoaアプリケーションでバインディングを使用する際に問題になります。例えばスウィフトのコアデータを使用したKVO通知

、私は私のNSManagedObjectのサブクラスにこのメソッドを追加した場合:

dynamic var ratePerPoint: Double { 
    guard pointsPerMonth > 0 else { return 0 } 

    return monthlyRate/Double(pointsPerMonth) 
} 

そして、それが重要だと私はdidChangeValueForKey("ratePerPoint")メッセージを送信すること、コア・データ・オブジェクトの一部であるpointsPerMonth変数を、更新するたびに。

もしそうでなければ、UIバインディングは正しく更新されません。

+0

コア・データは、(離れバグから)KVO&KVC準拠して、あなたがやっていると何が動作していないかを説明 – Wain

答えて

0

ratePerPointが計算プロパティの場合は、NSManagedObjectサブクラスにkeyPathsForValuesAffectingRatePerPointを実装する必要があります。

+ (NSSet *)keyPathsForValuesAffectingRatePerPoint { 
    return [NSSet setWithObjects:@"monthlyRate", @"pointsPerMonth", nil]; 
} 

ドキュメント:Registering Dependent Keys

関連する問題