核心数据问题 - 无法存储 NSNumber
Posted
技术标签:
【中文标题】核心数据问题 - 无法存储 NSNumber【英文标题】:Core Data Issue - Unable to store NSNumber 【发布时间】:2012-10-20 19:55:56 【问题描述】:我正在尝试在我的应用程序中使用 Core Data。我想存储一个属性“totalKM”。
为了存储我的属性,我使用这些行:
Model *event = (Model *)[NSEntityDescription insertNewObjectForEntityForName:@"Model" inManagedObjectContext:managedObjectContext];
int number = 4;
[event setTotalKM:[NSNumber numberWithDouble:number]];
要读取我的属性,我使用这些:
Model *event = (Model *)[NSEntityDescription insertNewObjectForEntityForName:@"Model" inManagedObjectContext:managedObjectContext];
NSNumber *number = [event totalKM];
我的属性“totalKM”总是默认值,O。我也不例外。我错过了什么吗?
谢谢。
【问题讨论】:
【参考方案1】:insertNewObjectForEntityForName
此方法用于将模型置于上下文中。
这是一个新对象。
正确的做法是:
设置新的
Model *event = (Model *)[NSEntityDescription insertNewObjectForEntityForName:@"Model" inManagedObjectContext:managedObjectContext];
int number = 4;
[event setTotalKM:[NSNumber numberWithDouble:number]];
//save change if need
NSError *error = nil;
if (![self.manageObjectContext save:&error])
NIDERROR(@"save managedContext error :%@",error);
获取对象进度
当你需要获取模型表单 coredate.u 需要 2 次获取时使用 fetch
喜欢这个圆顶
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc]init];
[fetchRequest setEntity:[NSEntityDescription entityForName:@"Board"
inManagedObjectContext:self.manageObjectContext]];
//set fetch conditions
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"board_id == %@", aBoardID];
[fetchRequest setPredicate:predicate];
NSError *error = nil;
NSArray *results = [self.manageObjectContext executeFetchRequest:fetchRequest error:&error];
if (error)
NIDERROR(@"fetch board error.\n board id: %@ \n error:%@", aBoardID, error);
return nil;
Model *model = results[0];
NSLog(@"%@",model.totalKM)
【讨论】:
以上是关于核心数据问题 - 无法存储 NSNumber的主要内容,如果未能解决你的问题,请参考以下文章