1

EXC_BAC_ACCESS属性を含む管理対象オブジェクトに TRUE 値を保存しようとすると、エラーが発生しBooleanます。

  id delegate = [[UIApplication sharedApplication] delegate];
    self.managedObjectContext = [delegate managedObjectContext];

    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"TrafficCameraInfo"
                                              inManagedObjectContext:self.managedObjectContext];


    [fetchRequest setEntity:entity];
    [fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"code=%@",self.selectedTrafficCamera.code]];

    NSError *error;
    TrafficCameraInfo *cgTrafficCamera;

    cgTrafficCamera = [[self.managedObjectContext executeFetchRequest:fetchRequest error:&error] lastObject];

    NSString *alertMessage;
    if (cgTrafficCamera.favourite == NO){
        cgTrafficCamera.name = @"TEST";                  <-- works ok
        cgTrafficCamera.favourite = 1;                   <-- causes an error
    } else {
        cgTrafficCamera.favourite = 0;
    }

    error = nil;
    if (![self.managedObjectContext save:&error]) {

管理オブジェクト インターフェイスは次のようになります。

@interface TrafficCameraInfo : NSManagedObject

@property (nonatomic, retain) NSString *code;
@property (nonatomic, retain) NSString *postCode;
@property (nonatomic, retain) NSNumber *latitude;
@property (nonatomic, retain) NSNumber *longitude;
@property (nonatomic, retain) NSString *name;
@property (nonatomic, retain) NSString *url;
@property (nonatomic) Boolean favourite;

@end

私のアプリの他の場所では、別のブール値フィールドに 1 を渡して更新していますが、問題は発生していません。

エラーの原因は何ですか?

4

2 に答える 2

3

あなたのコアデータ属性テーブルでは、「お気に入り」変数をBOOLに定義していると思います。つまり、それはNSNumberタイプであるため、NSNumberを使用してデータを設定する必要があります

于 2013-04-25T09:04:40.017 に答える