- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
三个问题,但它们都是相关的。如果你愿意,我可以把它们分成三个问题,这样你就可以获得更多的学分。如果您想让我这样做,请告诉我。
我有以下允许我访问 NSManagedObject 的代码
self.managedObjectContext = [(STAppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];
NSError *error;
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"LetsMeet" inManagedObjectContext:managedObjectContext]];
NSArray *objectArray = [managedObjectContext executeFetchRequest:request error:&error];
if(objectArray.count==0){
letsMeet = (LetsMeet *) [NSEntityDescription insertNewObjectForEntityForName:@"LetsMeet" inManagedObjectContext:managedObjectContext];
} else{
letsMeet = (LetsMeet *)[objectArray objectAtIndex:0];
}
上面的代码允许我保存和检索属性。即我可以访问 letsMeet.attribute 来保存和获取。
问题 1:如何删除并启动一个全新的 managedObjectContext。即用户有一个他在场景之间填写的表格。当用户点击导航 Controller 上的下一步按钮时,每个场景的所有内容都会保存到 CoreData。经过几个屏幕后,用户想要取消表单。在这一点上,我想删除迄今为止保存的所有内容。请代码示例。
问题 2:假设用户接近表单末尾并决定保存表单以供以后检索。如何将整个表单的副本保存为 Core Data 中的一个对象。请代码示例。
问题 3:稍后如何从 Core Data 中检索保存的对象并显示所有用户保存的内容?请代码示例。
最佳答案
要删除,您只需从 NSManagedObjectContext
中删除 letsMeet
对象。
NSError *错误;
[managedObjectContext deleteObject:letsMeet];
[managedObjectContext 保存:&error];
因为你总是只有一个对象,所以获取 letsMeet
的引用不是问题。您可以像在代码中那样做。
更新:而且您不需要删除托管对象上下文。它只是一个处理您的对象的空间。问题末尾有更多解释。
2. 如果 LetsMeet
实体的建模方式是所有表单元素都是 LetsMeet
的属性,则在创建 managedObjectContext
后保存LetsMeet
对象,就像您在代码中所做的那样,这将保存为单个对象。
3.您已经知道如何检索对象,因为这就是您在代码中所做的事情。一切都变得简单,因为您只使用一个对象。在多个对象获取唯一对象的情况下,您应该实现一个主键(可能是 formID,即;向 LetsMeet 添加另一个属性)或者您应该知道每个对象的 objectId
是什么是然后相应地设置您的提取请求的谓词。
NSFetchRequest *request = [[NSFetchRequest alloc]init];
[request setEntity:letsMeet];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"formId like %@", formId];
[request setPredicate:predicate];
NSArray *resultsArray =[managedObjectContext executeFetchRequest:request error:&error];
如果您的 formId 是唯一的,这将返回一个对象数组。
但是,如果您使用核心数据来仅处理一个对象,则可以使用 NSUserDefaults
或写入 plist 文件来执行此操作。这有点矫枉过正。
更新:获取 NSManagedObject 的 objectId:
[letsMeet objectId];
ManagedObjectContext 就像一 block 白板。数组中的对象,托管对象上下文中的对象,都是一样的。您可以更改对象、添加对象、删除对象等。唯一的问题是当您执行 [managedObjectContext save:]
时对象的当前状态,即写入磁盘。
关于ios - 保存和删除 NSManagedObject 和 NSManagedObjectContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15125734/
我尝试为我的 UITableViewController 使用 NSFetchedResultsController(FRC),因为我喜欢 FRC 附带的功能,而不是尝试手动管理我的 UITableV
我的应用程序中目前有 2 个上下文。我的应用程序使用多个选项卡,因此一个选项卡可能正在显示数据,而另一个选项卡可能处于数据输入模式。 我使用一个主要上下文来读取大部分数据以进行显示。当我插入数据时,我
我在 appDelegate 中创建了一个主要的 NSManagedObjectContext。 现在,我正在使用另一个 NSManagedObjectContext 来编辑/添加新对象,而不会影响主
假设我们有一个应用程序需要显示地点列表并且在 3 个线程上运行: 主线程 主线程后台同步(同步有服务器的地方) 地理编码线程(对位置进行地理编码背景) 在所有 3 个线程中,我都有专用的 NSMana
所以我需要使用多线程来使用 cora-data 托管对象上下文。我发现下面的实现几乎是我所需要的。我有 2 个问题: 在哪里释放我分配的 MOC?我不想遍历应用程序中的每个函数线程并调用函数来释放 M
我正在开发一个使用 coredata 的 ipad 应用程序。它下载网络数据库上的信息,并将其记录在 coredata 中。该应用程序基于分割 View 。我的问题是在后台下载和记录数据。 这是我的做
有没有办法在主线程之外的后台保存我的 NSManagedObjectContext ?保存会减慢应用程序的执行速度,因为它通常需要大约 2 秒。 最佳答案 是的,有。 Apple recommends
在 iPhone 的核心数据中,我在尝试将数据保存到 NSManagedObjectContext 时遇到了各种错误。 我相信我的问题都与我使用在多个线程中使用的 NSManagedObjectCon
我有两个实体,每个实体都显示在自己的 UITableView 部分上。 我启用了编辑功能,允许用户通过向右滑动来删除行。这对于第一个实体来说效果很好,但是当我尝试删除第二个实体中的对象时,我收到此错误
我有以下设置: NSManagedObjectContext *parent = [[NSManagedObjectContext alloc]
在调试时,如果我有一个 NSManagedObjectContext,有没有办法查看里面有什么对象。 基本上我有一个保存错误,因为保存了一个不符合 NSCoding 的 CGColor。但我不知道这个
我正在尝试制作一个用户可以编辑 managedObject 属性的应用程序在 View 中,然后选择 Done保留更改,或 Cancel撤消更改。 为了实现此行为,我计划执行以下操作 - 当 View
最近我遇到了一个无法解释的问题。所以我有一个 DocumentContext 类,其中包含一个 Document (NSManagedObject)。这些类的代码是 extension Documen
我想在插入新数据之前清除 CoreData 实体中的所有数据。到目前为止,我尝试过删除所有内容,并且不允许我插入更新的数据,即使对这两个操作使用相同的上下文也是如此。有更好的方法吗?这是我一直在实现的
在我的应用中,我将 Core Data 堆栈从 AppDelegate 移至其自己的名为 LiftEventDataManager 的类中。在一些类中,我获得了对该堆栈的引用,当然,每次我执行操作时都
我正在使用以下代码创建一个对象: +(Checkin *) newCheckinWithId:(NSString*) checkinID forVenueId:(NSString *)venueId
我是 Core Data 的新手。 我的数据模型有一个 User 实体,它有一个属性 fullName,它是从服务器获取的。我使用 NSFetchedResultsController 在 Table
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingSt
我使用 Core Data - 我已经注册并正在监听 NSManagedObjectContextDidSaveNotification:我有一个数据集合(来自 JSON),我想要保存它,在保存所有对
我的核心数据堆栈像往常一样在 AppDelegate 中设置。我是一个优秀的 OO 公民,并认识到可以通过 [[UIApplication sharedApplication] delegate] m
我是一名优秀的程序员,十分优秀!