我对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];
答案 0 :(得分:3)
首先,您需要一个数据模型来反映您想要保存的内容,在本例中是一些文本和日期。所以:
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
现在将包含所有DatedText
个对象的数组,其savedDate
与targetDate
相同。
答案 1 :(得分:2)
有关Core Data的大量资源,您可以按照以下链接进行学习。 http://developer.apple.com/library/ios/#documentation/DataManagement/Conceptual/iPhoneCoreData01/Introduction/Introduction.html适用于iOS的核心数据教程:这是非常棒的官方文档,易于学习,可下载源代码。 Any good guide about iPhone Core Data?之前有人问过同样的问题,你可以看看。