私の主な問題は、Core Data でサポートされていないデータを保存することです。変換可能な属性として保存されている CLLocation プロパティが既にあります。正しいアプローチは、一時的な座標プロパティを宣言することだと思います。ただし、EXC_BAD_ACCESS エラーが発生し続けます。
編集:
私の現在のサブクラスには、次のインターフェースがあります。
#import <Foundation/Foundation.h>
#import <CoreLocation/CoreLocation.h>
@interface Event : NSManagedObject {
}
@property (nonatomic, retain) NSString* title;
@property (nonatomic, retain) NSDate* timeStamp;
@property (nonatomic, retain) CLLocation *location;
@end
だから私は追加する必要があります
@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;
と
- (void)setCoordinate:(CLLocationCoordinate2D)newCoordinate;
プロトコルに準拠します。(setCoordinate はオプションですが、注釈をドラッグ可能にしたい場合は必要です)
コア データでは、場所のプロパティは変換可能です。また、実装で @dynamic を使用してアクセサーを生成します。コード全体でこのプロパティを使用しているため、これを保持したくありません。
コアデータの座標プロパティを一時的なものとして定義するのが最善の方法だと思いますが、実装に間違いはありません。
- (CLLocationCoordinate2D)coordinate {
CLLocationCoordinate2D cor = CLLocationCoordinate2DMake(self.location.coordinate.latitude,
self.location.coordinate.longitude);
return cor;
}
- (void)setCoordinate:(CLLocationCoordinate2D)newCoordinate {
CLLocation *newLoc = [[CLLocation alloc] initWithLatitude:newCoordinate.latitude
longitude:newCoordinate.longitude];
[self.location release];
self.location = newLoc;
}
いくつかの方法を試しましたが、これが最新の方法です。
編集 2: の EXC_BAD_ACCESS:
_kvcPropertysPrimitiveSetters