【发布时间】:2012-03-15 17:12:11
【问题描述】:
我正在我的应用程序上使用核心数据,
我在保存一个应该是整数的数字时遇到问题...当我从 Core Data 获取它时,它显示奇怪的数字值
我知道它正在工作,因为在测试中,我的 idTosave = 345,它显示在 CoreData 的结果上,但是当我发送一个值 [string to int] 时,我知道它正在工作,因为它记录了正确的响应,CD 保存一个奇怪的值:
(请注意我保存到实体 idRef)
NSLog(@"resultToDisplay:: %@", self.resultsToDisplay);
// int idToSave = 345; //if I use this line instead of intValue it saves 345 OK!
int idToSave = (int)[self.resultsToDisplay intValue];
NSLog(@"id salvada as NSINTEGER:: %d",idToSave);
//graba a CD!
[Student insertWithDataQR:[studentDataDicto objectForKey:@"name"] surname:[studentDataDicto objectForKey:@"surname"]
phone:[studentDataDicto objectForKey:@""]
dob:[studentDataDicto objectForKey:@"dob"] idRef:idToSave ...]];
[[Student defaultManagedObjectContext]save:nil];
退出:
resultToDisplay:: 1329955200
2012-02-26 00:36:08.597 MyGym_iPad[10867:707] id salvada as NSINTEGER:: 1329955200
注意值 1329955200,在保存前正确显示为整数和字符串,
并检查我所做的响应:
NSArray *studiantes = [Student all];
for ( Student *tud in studiantes) {
NSLog(@"tu %@ ...%@",tud.studentName, tud.idRef );
}
所以,使用 int 345,我在日志上看到 tu.idRef == 345
但是使用字符串中的 int,我在日志上看到 tu.idRef == -32384
所以如果我从字符串保存到 int,我得到我的回应:-32384
编辑:
我已对生成的核心数据类管理器文件进行子类化,以将 idRef 保存为 NSNumber
studentData.idRef = [NSNumber numberWithInt:idRef];
编辑 x2
检查我做的日志:
NSArray *studiantes = [Student all];
for ( Student *tud in studiantes) {
NSLog(@"tu %@ ...%d",tud.studentName, [tud.idRef intValue]);
}
但结果是: -32384 ,对于我的值转换为 int,当从字符串保存时
但正确的值 345,刚刚直接发送一个int的时候,
【问题讨论】:
-
所以如果出于测试目的我发送一个 int ::345,它保存得很好,但是如果发送一个 NSSTring intValue,它就不起作用了,,,,我必须发送一个 int我的课是设计的,谢谢
标签: iphone ios core-data casting