2010-12-05 1 views
0

У меня есть проблема, которую я не могу решить с помощью объекта Core Data.Число плавающих чисел Coredata становится нулевым

В моем сущности есть два отношения (whoHasToPay, whoHasToBePaid) и атрибут (howMuch).

Это код, в котором я вставляю запись в базе данных

Debitcredit *dc = [NSEntityDescription 
    insertNewObjectForEntityForName:@"Debitcredit" 
    inManagedObjectContext:self.context]; 
dc.howMuch = [NSNumber numberWithFloat:5.2f]; 
dc.whoHasToPay = theDebitor; 
dc.whoHasToBePaid = theCreditor; 
NSLog(@"%@", dc); 
[self.context save:&error]; 

NSLog показывает

<Debitcredit: 0x151590> (entity: Debitcredit; id: 0x141570 
    <x-coredata:///Debitcredit/t8DC4691F-5DE3-42D5-8095-C2D5D3264C8D2> ; data: { 
    howMuch = "5.2"; 
    whoHasToBePaid = "0x140c50 <x-coredata://C25DC4FE-B46B-402C-B513-A2A83C6A9F86/Users/p1>"; 
    whoHasToPay = "0x14c280 <x-coredata://C25DC4FE-B46B-402C-B513-A2A83C6A9F86/Users/p2>"; 
}) 

поэтому значение howMuch кажется правильным.

Однако, когда я называю его снова

fetchRequestCount = [[NSFetchRequest alloc] init]; 
entityCount = [NSEntityDescription entityForName:@"Debitcredit"  
    inManagedObjectContext:self.context]; 
[fetchRequestCount setEntity:entityCount]; 
fetchedObjectsCount = [self.context executeFetchRequest:fetchRequestCount error:&error]; 
for (Debitcredit *dc in fetchedObjectsCount) { 
    NSLog(@"%f", [dc valueForKey:@"howMuch"]); 
    NSLog(@"%@", [[dc valueForKey:@"whoHasToPay"] name]); 
    NSLog(@"%@", [[dc valueForKey:@"whoHasToBePaid"] name]); 
} 
[fetchRequestCount release]; 

NSLog показывает

2010-12-05 01:47:04.636 myApp[6179:307] 0.000000 
2010-12-05 01:47:04.642 myApp[6179:307] John 
2010-12-05 01:47:04.646 myApp[6179:307] Jack 

Кажется, что howMuch становится равным нулю. Зачем? Я ошибаюсь?

ответ

3

Это ошибка регистрации. Поплавки и другие числовые значения сохраняются как объекты NSNumber. Это:

[dc valueForKey:@"howMuch"] 

... возвращает объект NSNumber, а не значение поплавка. Вам необходимо сменить журнал на:

NSLog(@"%@", [dc valueForKey:@"howMuch"]); 

... и вы должны увидеть правильное значение.

+0

Спасибо, теперь это работает! – 2010-12-05 02:22:49

 Смежные вопросы

  • Нет связанных вопросов^_^