2010-12-03 10 views
2

É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

+0

Problème résolu. Trouvé ceci: http://stackoverflow.com/questions/1283960/iphone-core-data-unresolved-error-while-saving qui m'a aidé. – PeterK

Répondre

13

Erreur cacao 1660 = erreur de contrainte. Vérifiez si certains des champs de données de votre base de données sont limités. J'ai eu cette erreur et l'ai corrigé quand j'ai noté que j'essayais de mettre 20 caractères dans un champ qui avait une limite de 10 caractères ...

+0

Tx Magnus, même si je l'ai déjà résolu début décembre :-) Impressionnant d'avoir une réponse après une si longue période. – PeterK

+0

ok. Je n'ai pas vu de réponses, et j'ai juste réussi à obtenir ce tri aujourd'hui. – Magnus

+0

Merci pour ce pointeur. J'avais fixé la limite à une colonne à 100 après quoi j'ai eu ce problème a commencé dans mon application. – zeeshan