gpt4 book ai didi

iphone - 保存和加载数据 - CoreData

转载 作者:行者123 更新时间:2023-12-03 19:12:16 25 4
gpt4 key购买 nike

我是 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com