Tag: 嵌套

将子项ManagedObjectContext所做的更改复制到实体的父级

我期望(甚至希望)这将是一个愚蠢的问题,但经过这个问题摔跤了好几个小时,我需要一些见解。 我的iOS 5.1应用程序使用嵌套的MOC(具有PrivateQueueConcurrency子MOC),将其称为MOC-Child,其父母是MainQueueConcurrency MOC,将其称为MOC-Parent。 MOC-Parent支持显示其实体的表视图。 MOC-Child被parsing器使用,该parsing器在非主线程上asynchronous运行,以创build与从URL连接parsing的XML实体描述对应的新实体,然后将新实体推送到MOC-Parent,通过保存在MOC-Child上,以表格forms显示它们。 这很好用: 1) Parser creates entity in MOC-Child 2) Parser saves MOC-Child 3) New entity is added to MOC-Parent 4) New entity is displayed in MOC-Parent's table view 但是,此提要中任何给定实体的描述可能会随时间而改变,以便它所描述的实体需要在应用中进行修改,并更新表视图中的单元格。 因此,对于Feed中的每个实体描述,parsing器都会尝试获取MOC-Child中与所描述的实体具有相同ID的实体(如果有的话),如果有人将现有实体的值与描述值进行比较,看看是否有任何改变。 当parsing器以这种方式检测到实体已被修改时,它用MOC-Child中的新值更新MOC-Child中现有实体的值,然后保存MOC-Child以将更改推送到MOC-Parent。 这是事情出错的地方。 我曾经想过,对MOC-Child中的获取实体所做的更改,如果通过保存而被推送给父项,则会简单地“出现”到MOC-Parent中的“相同”实体中。 但是,我所看到的情况是,将来自MOC-Child的已更改的实体添加到MOC-Parent, 好像它是一个完全独立的新实体 ; 结果是MOC-Parent以及它驱动的表视图对于每个被修改的实体最终有两个实体: 1) Parser modifies existing entity in MOC-Child 2) Parser saves MOC-Child 3) Modified […]

了解iOS中的View Controller嵌套

在过去的几天里,我一直在扯掉自己的头发,试图理解iOS开发这个看似基本的概念: 如果我想有两个或更多的视图控制器显示和可用在同一个“屏幕”,是这样的: 根据苹果的“每个屏幕内容一个VC” 完全可能通过添加VC的通过代码 只是没有完成。 相反,使用一个VC,只需添加模拟所需视图控制器function的代码即可。 让我重新修改一下: 如果我想在iPad应用程序中拥有占据屏幕左侧很大一部分的UIView (A)和占据屏幕右侧其余部分的第二个UIView (B)我想添加一个button到UIView B,点击时将使用模式转换来向上滑动UITableview来replaceUIView B,然后这个UITableview将像一个典型的UITableviewController ,当用户从表中select一个项目时,典型的事件发送到桌面控制器推入一套新的项目,这是可能的吗? 在我看来,如果我已经能够轻松地创build两个单独的UIViewControllers,并在一个VC中有一个button模态地调出第二个VC,为什么不能组合这个function,以便一个VC有两个子VC,而那些VC处理他们自己的模式转换。 或者,在这种情况下,最好的做法是只需一个VC来处理所有事情,然后在不同的UI元素上点击各种不同的视图后,手动处理幻灯片的进出。 正如你所看到的,我认为我已经阅读了太多不同的,相互冲突的回答,类似于这个问题,我已经完全搞不清什么是什么了。 如果有人明白我在做什么,并可以借给一个帮助解释或一些指针Id非常感激。

核心数据:儿童上下文是否获得新插入对象的永久对象ID?

我有一个应用程序与两个pipe理对象上下文设置像这样: 父上下文:链接到持久性存储的NSPrivateQueueConcurrencyType。 主要上下文:NSMainQueueConcurrencyType,父上下文的子项。 当插入一个新的托pipe对象到主要的上下文,我保存主要的上下文,然后像这样的父上下文: [context performBlockAndWait:^{ NSError * error = nil; if (![context save: &error]) { NSLog(@"Core Data save error %@, %@", error, [error userInfo]); } }]; [parentContext performBlock:^{ NSError *error = nil; BOOL result = [parentContext save: &error]; if ( ! result ) { NSLog( @"Core Data save error in parent context %@, %@", […]