Éditer: J'ai été en mesure de réparer la chose de présentation en changeant le NSLog pour présenter l'int réel plutôt que le pointeur.Stockage int32 dans le modèle Core Data et Cocoa Error 1660
NSLog (@ "id:% i", [[info valeurForKey: @ "idQ"] intValeur]);
Toujours avoir l'erreur Cocoa 1660 à résoudre ??
Je fais mes premiers tests avec Core Data et utilise ce tutoriel (http://www.raywenderlich.com/934/core-data-tutorial-getting-started).
J'ai ensuite essayé mes propres tests et j'ai un peu réussi. Cependant, l'int32 (seulement 32 à cause du tutoriel) donne un nombre étrange. Je soupçonne que cela a quelque chose à voir avec NSNumber. L'erreur Cocoa 1660 je crois a quelque chose à faire avec un nombre long dans la sortie (entrée = 1 et sortie = 95518976). Je suppose que c'est une question d'être un pointeur et doit présenter correctement, mais qu'en est-il de l'erreur.
Quelqu'un pourrait-il me donner un indice pour résoudre ce problème?
- (void)testingDBmodel {
NSLog(@">>testingDBmodel<<");
//=================DATABASE===================//
// id
// qDiff
// question
// qRightAnswer
// qWrongAnswer1
// qWrongAnswer2
// qNr
// qRegDate
if (managedObjectContext == nil) { managedObjectContext = [(FamQuiz_v2AppDelegate *)
[[UIApplication sharedApplication] delegate] managedObjectContext]; }
NSManagedObjectContext *context = [self managedObjectContext];
NSManagedObject *famQuizInfo = [NSEntityDescription
insertNewObjectForEntityForName:@"questions"
inManagedObjectContext:context];
[famQuizInfo setValue:[NSNumber numberWithInt:1] forKey:@"idQ"];
[famQuizInfo setValue:@"qDiff1" forKey:@"qDiff"];
[famQuizInfo setValue:@"question1" forKey:@"question"];
[famQuizInfo setValue:@"qRightAnswer1" forKey:@"qRightAnswer"];
[famQuizInfo setValue:@"qWrongAnswer1_1" forKey:@"qWrongAnswer1"];
[famQuizInfo setValue:@"qWrongAnswer2_2" forKey:@"qWrongAnswer2"];
[famQuizInfo setValue:@"999" forKey:@"qNr"];
[famQuizInfo setValue:[NSDate date] forKey:@"qRegDate"];
NSError *error;
if (![context save:&error]) {
NSLog(@"Whoops, couldn't save: %@", [error localizedDescription]);
}
//==========READ DATABASE==============//
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"questions" inManagedObjectContext:context];
[fetchRequest setEntity:entity];
NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];
for (NSManagedObject *info in fetchedObjects) {
NSLog(@"id: %i", [info valueForKey:@"idQ"]);
NSLog(@"qDiff: %@", [info valueForKey:@"qDiff"]);
NSLog(@"question: %@", [info valueForKey:@"question"]);
NSLog(@"qRightAnswer: %@", [info valueForKey:@"qRightAnswer"]);
NSLog(@"qWrongAnswer1: %@", [info valueForKey:@"qWrongAnswer1"]);
NSLog(@"qWrongAnswer2: %@", [info valueForKey:@"qWrongAnswer2"]);
NSLog(@"qNr: %@", [info valueForKey:@"qNr"]);
NSLog(@"qRegDate: %@", [info valueForKey:@"qRegDate"]);
}
[fetchRequest release];
}
La sortie:
2010-12-03 01: 11: 54,097 Test_v2 [11177: 207] >> testingDBmodel < <
2010-12-03 01 : 11: 54.104 Test_v2 [11177: 207] Oups, impossible d'enregistrer: L'opération n'a pas pu être complétée. (Erreur Cocoa 1660.)
2010-12-03 01: 11: 54,112 Test_v2 [11177: 207] id: 1
03/12/2010 01: 11: 54,112 Test_v2 [11177: 207] Qdiff: qDiff1
2010-12-03 01: 11: 54.113 Test_v2 [11177: 207] question: question1
2010-12-03 01: 11: 54.113 Test_v2 [11177: 207] qRightAnswer: qRightAnswer1
2010-12-03 01:11 : 54,114 Test_v2 [11177: 207] qWrongAnswer1: qWrongAnswer1_1
2010-12-03 01: 11: 54,114 Test_v2 [11177: 207] qWrongAnswer2: qWrongAnswer2_2
2010-12-03 01: 11: 54,114 Test_v2 [11177: 207] qNr: 999
2010-12-03 01: 11: 54.116 Test_v2 [11177: 207] qRegDate: 2010-12-03 01:11:54 +0100
Problème résolu. Trouvé ceci: http://stackoverflow.com/questions/1283960/iphone-core-data-unresolved-error-while-saving qui m'a aidé. – PeterK