1

質問のためにこれを単純化していますが、例として、エンティティという名前のモデルと、オプションではないがデフォルト値が設定されEmployeeているブール属性という名前のモデルがあるとします。vacationingNO

Employeeただし、エンティティへの更新を保存しようとすると、「休暇は必須の値です」と表示されます。コードは次のようになります。

- (void)reinstateEmployee:(Employee*)employee context:(NSManagedObjectContext*)context {
    employee.vacationing = NO;

    NSError *error;
    if (![context save:error]) {
        NSLog(@"Error saving: %@", error.localizedDescription);
    }
}
4

1 に答える 1

3

ここでの問題は、実際にはとも表すNOエイリアスにすぎないことです。0nilNULL

nilプロパティへの割り当ては完全に有効であるためNSNumber、コンパイラは文句を言わず、vacationingfalse に設定する代わりに設定を解除します。これは、属性が必要な場合には有効ではありません。

これは、コンパイラの警告を生成する に置き換えることNOでより明確になります。YES

この問題を解決するには、またはに置き換えNOて、代わりにインスタンスを割り当てます。@NO[NSNumber numberWithBool:NO]NSNumber

于 2012-11-08T01:22:31.717 に答える