我是 CoreData 的新手,在我的 iPhone 应用程序中,我想知道如何保存一些文本,然后将其重新加载。但诀窍是,当 UIDatePicker 中的日期与我相同时加载它。像日历一样保存它。
更新
感谢您的回复,特别是代码示例。然而,我对如何结合在一起有一些疑问,请原谅我。我想了解它是如何工作的,但同时让它工作确实会很有帮助。
大概我将您的第一个代码块放入完成编辑方法中(离开文本框时保存),然后将第二个代码块放入日期更改方法中(更改日期时加载)?
这段代码,是否使用了实体和属性名称?我到底需要如何设置我的 xcdatamodel 文件?我是否需要使用此代码,或者这只是演示我需要哪些实体和属性?
DatedText{
savedText:String
dateSaved:Date
}
此行表示“mo”未声明:(已修复)
newDatedText=mo=[NSEntityDescription insertNewObjectForEntityForName:@"DateText"
inManagedObjectContext:theManagedObjectContext];
大概“someText”下面是我想要保存的文本? 'aDateObject' 是我的 UIDatePicker 中的日期?
[newDatedText setValue:someText forKey:@"savedText"];
[newDatedText setValue:aDateObject forKey:@"dateSaved"];
请求非结构或联合中的成员“moc”:
NSEntityDescription *testEntity=[NSEntityDescription entityForName:@"DatedText" inManagedObjectContext:self.moc];
什么是“targetDate”(未声明)? UIDatePicker 再次日期?
NSPredicate *pred=[NSPredicate predicateWithFormat:@"dateSaved==%@", targetDate];
请求非结构或联合中的成员“moc”:
NSArray *fetchedObjs=[self.moc executeFetchRequest:theFetch error:&fetchError];
最佳答案
首先,您需要一个数据模型来反射(reflect)您想要保存的内容,在本例中是一些文本和日期。所以:
DatedText{
savedText:String
dateSaved:Date
}
要创建新的 DatedText
对象(没有自定义类),请执行以下操作:
NSManagedObject *newDatedText;
newDatedText=[NSEntityDescription insertNewObjectForEntityForName:@"DateText" inManagedObjectContext:theManagedObjectContext];
[newDatedText setValue:someText forKey:@"savedText"];
[newDatedText setValue:aDateObject forKey:@"dateSaved"];
NSError *saveError=nil;
[theManagedObjectContext save:&saveError];
if (saveError!=nil) {
NSLog(@"[%@ saveContext] Error saving context: Error=%@,details=%@",[self class], saveError,saveError.userInfo);
}
要检索具有特定日期的 DatedText
对象,您可以像这样创建一个提取:
NSFetchRequest *fetch=[[NSFetchRequest alloc] init];
NSEntityDescription *testEntity=[NSEntityDescription entityForName:@"DatedText" inManagedObjectContext:self.moc];
[fetch setEntity:testEntity];
NSPredicate *pred=[NSPredicate predicateWithFormat:@"dateSaved==%@", targetDate];
[fetch setPredicate:[NSArray arrayWithObject:pred]];
NSError *fetchError=nil;
NSArray *fetchedObjs=[theManagedObjectContext executeFetchRequest:theFetch error:&fetchError];
if (fetchError!=nil) {
NSLog(@" fetchError=%@,details=%@",fetchError,fetchError.userInfo);
return nil;
}
fetchedObjs
现在将包含与 targetDate
具有相同 savedDate
的所有 DatedText
对象的数组。
关于iphone - 保存和加载数据 - CoreData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4177398/