1

「保存に失敗しました」というエラーが表示されます。いいえ。1620、次のことを試すと:

NSManagedObjectContext *context = [self managedObjectContext];

CustomObject *objToInsert = [NSEntityDescription insertNewObjectForEntityForName:@"CustomObject" inManagedObjectContext:context];

objToInsert.variable1 = [NSNumber numberWithFloat:10.0];
objToInsert.variable2 = [NSDate date];
objToInsert.variable3 = [NSNumber numberWithInt:1];

NSError *error;
if (![context save:&error]) {
    NSLog(@"failed to save with error = %@", [error localizedDescription]);
}

この同じロジックは、他の NSManagedObject サブクラス オブジェクトを managedObjectContext に保存するときにも問題なく機能します。1620 エラーは「数値が小さすぎる」検証エラーとしてリストされていますが、入力している数値に問題がないことは明らかです。3 つの変数は、私のデータ モデルでは Float、Date、および Integer 16 として定義されていますが、それが関連しているかどうかはわかりません。

コア データ スタックはすべて存在し、正しく、前述のとおり、他の挿入ロジックとうまく連携します。ここで何か不足していますか?

編集: エラー出力から、Core Data が完全に異なる NSManagedObject サブクラスを保存しようとしていることが判明しました。これはなぜでしょうか?

4

1 に答える 1

3

最終的に、解決策はMartin R(コメントを参照)によって提案されたものと部分的に同じでしたが、完全に異なるエンティティに対するものでした。データ モデル内の他のエンティティに必要な最小値が設定されていて、そのエンティティが以前の時点で変更されて保存されている場合、その後他のエンティティに保存するとエラーが発生するようです。これは賢明ではないようです - 多分私はどこかで何か間違ったことをしていますか? -しかし、最小値の要件を削除すると、この特定の問題は解決しました。

于 2012-10-24T14:06:28.953 に答える