问题标签 [nsfetchedresultscontroller]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
iphone - 您如何使用 NSFetchedResultsController 处理节插入?
我有一个 NSFetchedResultsController 作为我的数据源,并且我在我的自定义 UITableViewController 中实现了 NSFetchedResultsControllerDelegate。我正在使用 sectionNameKeyPath 将我的结果集分成多个部分。
在我的一种方法中,我将几个对象添加到上下文中,所有这些对象都在一个新部分中。在我保存对象的那一刻,委托方法被正确调用。事件顺序:
在最后一次调用“endUpdates”时,应用程序总是崩溃:
似乎表格更新在某种程度上与 NSFetchedResultsController 数据不同步,并且事情发生了变化。我正在关注 NSFetchedResultsControllerDelegate 上的文档,但它不起作用。正确的方法是什么?
更新:我创建了一个显示此错误的测试项目。您可以在以下位置下载它:NSBoom.zip
iphone - Core Data 支持 UITableView 和索引
我正在尝试实现一个支持索引的 Core Data 支持的 UITableView(例如:出现在侧面的字符,以及与它们一起出现的部分标题)。如果没有使用核心数据,我完全没有问题:
我在不使用索引的情况下实现由 Core Data 支持的 UITableView 也没有问题。
我想弄清楚的是如何优雅地将两者结合起来?显然,一旦您索引并重新分段内容,您就不能再使用标准 NSFetchedResultsController 来检索给定索引路径中的内容。因此,我将索引字母存储在 NSArray 中,将索引内容存储在 NSDictionary 中。这一切都可以很好地显示,但是在添加和删除行时我真的很头疼,特别是如何正确实现这些方法:
因为它返回给我的索引路径与核心数据中的索引路径没有相关性。当用户添加一行时,我通过简单地重建我的索引 NSArray 和 NSDictionary 来添加工作,但是当他们删除一个时执行相同操作会使整个应用程序崩溃。
我在这里缺少一个简单的模式/示例来使所有这些正常工作吗?
编辑:澄清一下,我知道 NSFetchedResultsController 是开箱即用的,但我想要的是复制联系人应用程序等功能,其中索引是人名的第一个字母。
iphone - Core Data iPhone App 的设计模式
我正在构建一个将使用核心数据模型的应用程序。我是 Objective C 的新手,我通常的设计模式并不真正适用于 Core Data 和 Objective C,至少我似乎无法找到证实它们适用的示例。
我已经通过了 Apple Developer 示例和 intertubes 上的不同来源。
似乎要利用核心数据,我需要将 managedObjectContext 传递给我的每个 viewController,让 viewController 实现 NSFetchedResultsControllerDelegate,然后实现每个获取方法并随后实现
NSFetchedResultsChangeDelete NSFetchedResultsChangeMove NSFetchedResultsChangeUpdate
这在每个 viewController 中添加了大约 100 多行代码,这与我一次又一次编写的代码相同的 90%。另外,我必须传递所有内容并跟踪它的内存占用。
在其他语言中,我将构建几个类的单例模型,这些类包含根据请求维护和交付数据的方法,可从任何地方获得。看来我不能在 Objective C 中采用这种方法。如果我在哪里构建一个静态类,它接受一个 managedObjectContext 并返回我需要的东西,我仍然必须将 managedObjectContext 传递给每个视图,它不会是异步的,就像我实现在结果准备好时才调用的委托方法一样。
我希望这是有道理的,并且有人可以确认没有其他合理的方法可以做到这一点,或者帮助我指出以一种好的方式结束它的方向。
谢谢:)
iphone - 动态更改 NSFetchedResultsController 中的排序
我正在尝试通过某种分段控制动态更改 NSFetchController 中的排序。要么排序 A->Z Z->A 类型的东西。
我该怎么做才能做到这一点?我在这里遵循 Jeff Lamarche 的示例:这里
我需要创建一个新的 NSFetchedResultsController 然后设置它,还是我只是创建一个新的 NSFetchRequest 并执行
然后我的表会自动更新?
iphone - NSfetchedResultsControllerDelegate 崩溃的 tableview
大家好,我正在使用 NSFetchedResultsControllerDelegate 来更新我的表格视图。例如,
//现在tableview没有任何记录了。
2009-11-15 12:25:48.328 XXX[36890:207] 0 //更新前的节数 //调用 tableview 开始更新
2009-11-15 12:25:54.277 XXX[36890:207] insert 0 //insert new section //开始插入数据
2009-11-15 12:25:54.278 XXX[36890:207] NSFetchedResultsChangeInsert: 行:31 部分:0 2009-11-15 12:25:54.278 XXX[36890:207] NSFetchedResultsChangeInsert: 行:30 部分:0 2009- 11-15 12:25:54.278 XXX[36890:207] NSFetchedResultsChangeInsert: 行:45 部分:0 2009-11-15 12:25:54.279 XXX[36890:207] NSFetchedResultsChangeInsert: 行:62 部分:0 2009-11- 15 12:25:54.279 XXX[36890:207] NSFetchedResultsChangeInsert: 行:12 部分:0 2009-11-15 12:25:54.280 XXX[36890:207] NSFetchedResultsChangeInsert: 行:54 部分:0 2009-11-15 12 :25:54.280 XXX[36890:207] NSFetchedResultsChangeInsert: 行:2 部分:0 2009-11-15 12:25:54.280 XXX[36890:207] NSFetchedResultsChangeInsert: 行:14 部分:0 2009-11-15 12:25 :54.281 XXX[36890:207] NSFetchedResultsChangeInsert:行:63 部分:0 2009-11-15 12:25:54.281 XXX[36890:207] NSFetchedResultsChangeInsert:行:27 部分:0 2009-11-15 12:25:54.281 XXX[36890:207] NSFetchedResultsChangeInsert: 行:5 部分:0 2009-11-15 12:25:54.282 XXX[36890:207] NSFetchedResultsChangeInsert: 行:7 部分:0 2009 -11-15 12:25:54.282 XXX[36890:207] NSFetchedResultsChangeInsert: row:44 section:0 2009-11-15 12:25:54.283 XXX[36890:207] NSFetchedResultsChangeInsert: row:51 section:0 2009-11 -15 12:25:54.283 XXX[36890:207] NSFetchedResultsChangeInsert:行:9 部分:0 2009-11-15 12:25:54.283 XXX[36890:207] NSFetchedResultsChangeInsert:行:29 部分:0 2009-11-15 12:25:54.284 XXX[36890:207] NSFetchedResultsChangeInsert: 行:64 部分:0 2009-11-15 12:25:54.284 XXX[36890:207] NSFetchedResultsChangeInsert: 行:22 部分:0 2009-11-15 12: 25:54.284 XXX[36890:207] NSFetchedResultsChangeInsert:行:25 部分:0 2009-11-15 12:25:54.285 XXX[36890:207] NSFetchedResultsChangeInsert:行:57 部分:0 2009-11-15 12:25:54.285 XXX[36890:207] NSFetchedResultsChangeInsert: 行:50 部分:0 2009-11-15 12:25:54.286 XXX[36890:207] NSFetchedResultsChangeInsert: 行:13 部分:0 2009 -11-15 12:25:54.286 XXX[36890:207] NSFetchedResultsChangeInsert: row:8 section:0 2009-11-15 12:25:54.287 XXX[36890:207] NSFetchedResultsChangeInsert: row:61 section:0 2009-11 -15 12:25:54.287 XXX[36890:207] NSFetchedResultsChangeInsert:行:15 部分:0 2009-11-15 12:25:54.287 XXX[36890:207] NSFetchedResultsChangeInsert:行:53 部分:0 2009-11-15 12:25:54.288 XXX[36890:207] NSFetchedResultsChangeInsert: 行:37 部分:0 2009-11-15 12:25:54.288 XXX[36890:207] NSFetchedResultsChangeInsert: 行:34 部分:0 2009-11-15 12: 25:54.288 XXX[36890:207] NSFetchedResultsChangeInsert:行:52 部分:0 2009-11-15 12:25:54.289 XXX[36890:207] NSFetchedResultsChangeInsert:行:58 部分:0 2009-11-15 12:25:54.289 XXX[36890:207] NSFetchedResultsChangeInsert: 行:4 部分:0 2009-11-15 12:25:54.290 XXX[36890:207] NSFetchedResultsChangeInsert: 行:41 部分:0 2009 -11-15 12:25:54.290 XXX[36890:207] NSFetchedResultsChangeInsert: row:49 section:0 2009-11-15 12:25:54.290 XXX[36890:207] NSFetchedResultsChangeInsert: row:39 section:0 2009-11 -15 12:25:54.291 XXX[36890:207] NSFetchedResultsChangeInsert:行:26 部分:0 2009-11-15 12:25:54.291 XXX[36890:207] NSFetchedResultsChangeInsert:行:20 部分:0 2009-11-15 12:25:54.291 XXX [36890:207] NSFetchedResultsChangeInsert:行:1 部分:0 2009-11-15 12:25:54.292 XXX [36890:207] NSFetchedResultsChangeInsert:行:21 部分:0 2009-11-15 12: 25:54.292 XXX[36890:207] NSFetchedResultsChangeInsert:行:65 部分:0 2009-11-15 12:25:54.293 XXX[36890:207] NSFetchedResultsChangeInsert:行:38 部分:0 2009-11-15 12:25:54.293 XXX[36890:207] NSFetchedResultsChangeInsert: 行:59 部分:0 2009-11-15 12:25:54.293 XXX[36890:207] NSFetchedResultsChangeInsert: 行:47 部分:0 2009 -11-15 12:25:54.294 XXX[36890:207] NSFetchedResultsChangeInsert: row:28 section:0 2009-11-15 12:25:54.294 XXX[36890:207] NSFetchedResultsChangeInsert: row:3 section:0 2009-11 -15 12:25:54.295 XXX[36890:207] NSFetchedResultsChangeInsert:行:55 部分:0 2009-11-15 12:25:54.295 XXX[36890:207] NSFetchedResultsChangeInsert:行:23 部分:0 2009-11-15 12:25:54.295 XXX[36890:207] NSFetchedResultsChangeInsert: 行:56 部分:0 2009-11-15 12:25:54.296 XXX[36890:207] NSFetchedResultsChangeInsert: 行:40 部分:0 2009-11-15 12: 25:54.296 XXX[36890:207] NSFetchedResultsChangeInsert:行:16 部分:0 2009-11-15 12:25:54.296 XXX[36890:207] NSFetchedResultsChangeInsert:行:6 部分:0 2009-11-15 12:25:54.297 XXX[36890:207] NSFetchedResultsChangeInsert: 行:60 部分:0 2009-11-15 12:25:54.297 XXX[36890:207] NSFetchedResultsChangeInsert: 行:17 部分:0 2009 -11-15 12:25:54.298 XXX[36890:207] NSFetchedResultsChangeInsert: row:11 section:0 2009-11-15 12:25:54.298 XXX[36890:207] NSFetchedResultsChangeInsert: row:33 section:0 2009-11 -15 12:25:54.298 XXX[36890:207] NSFetchedResultsChangeInsert:行:19 部分:0 2009-11-15 12:25:54.299 XXX[36890:207] NSFetchedResultsChangeInsert:行:46 部分:0 2009-11-15 12:25:54.299 XXX[36890:207] NSFetchedResultsChangeInsert: 行:36 部分:0 2009-11-15 12:25:54.299 XXX[36890:207] NSFetchedResultsChangeInsert: 行:42 部分:0 2009-11-15 12: 25:54.300 XXX[36890:207] NSFetchedResultsChangeInsert:行:18 部分:0 2009-11-15 12:25:54.300 XXX[36890:207] NSFetchedResultsChangeInsert:行:48 部分:0 2009-11-15 12:25:54.301 XXX[36890:207] NSFetchedResultsChangeInsert: 行:43 部分:0 2009-11-15 12:25:54.301 XXX[36890:207] NSFetchedResultsChangeInsert: 行:0 部分:0 2009 -11-15 12:25:54.301 XXX[36890:207] NSFetchedResultsChangeInsert: row:10 section:0 2009-11-15 12:25:54.302 XXX[36890:207] NSFetchedResultsChangeInsert: row:32 section:0 2009-11 -15 12:25:54.302 XXX[36890:207] NSFetchedResultsChangeInsert: 行:35 部分:0 2009-11-15 12:25:54.302 XXX[36890:207] NSFetchedResultsChangeInsert: 行:24 部分:00 2009-11-15 12:25:54.302 XXX[36890:207] NSFetchedResultsChangeInsert: row:35 section:0 2009-11-15 12:25:54.302 XXX[36890:207] NSFetchedResultsChangeInsert: row:24 section:00 2009-11-15 12:25:54.302 XXX[36890:207] NSFetchedResultsChangeInsert: row:35 section:0 2009-11-15 12:25:54.302 XXX[36890:207] NSFetchedResultsChangeInsert: row:24 section:0
//完成更新 //tableview 崩溃
2009-11-15 12:25:54.303 XXX[36890:207] * 由于未捕获的异常“NSRangeException”而终止应用程序,原因:“* -[NSCFArray objectAtIndex:]:索引 (65) 超出范围 (1)”2009- 11-15 12:25:54.303 XXX[36890:207] 堆栈:(32556123、2434330441、32640059、32639898、2149577、1745447、..)
**我的 tableview 崩溃了。另外,我不会在我的代码中调用 reloadData。
如果我在完成更新后重新加载数据,并忽略来自 FetchResultsControllerDelegate 的所有更新事件,那么一切正常。请帮忙!
iphone - NSFetchedResultsController 错误:
在使用 NSFetchedResultsController 将新记录插入我的 CoreData 存储后,当我尝试在分组的 UITableView 中显示数据时,应用程序崩溃并出现以下错误“
我已将部分键值添加到 sortDescriptors,但它没有帮助。这是我的代码:
}
我在这里想念什么?
谢谢 -
杰克
uitableview - 从表视图之外的 NSFetchedResultsController 控制的 UITableView 中删除时出错
我正在尝试在 UITableView 中删除由 NSFetchedResultsController 管理的对象 - 我正在尝试通过添加/删除按钮从单独的视图中执行此操作。但是,当我在视图之间切换时,控制器和表似乎变得不正常,我无法找出原因。这是我得到的错误 - 不幸的是,它并不总是发生取决于我通过应用程序采取的路径:
严重的应用程序错误。在核心数据更改处理期间捕获到异常:*** -[NSCFArray removeObjectAtIndex:]: index (6) beyond bounds (6) with userInfo (null)
我可以看到我的委托方法被正确调用,删除代码非常简单,我没有看到任何错误。
任何想法/调试提示将不胜感激。
iphone - 如何使用核心数据覆盖 sectionIndexTitlesForTableView?
我想创建一个表格,显示部分标题的完整日期,例如。@“EEEE dd MMMM yyyy”。然后在右侧的快速用户索引中使用@"MMM" 值来提供对给定月份的快速访问。
我可以使用核心数据中第一个字符的默认值使索引正常工作。所以 fetchedResultsController 正在工作并提取正确的数据。我已经检查了文档以获取覆盖此方法的任何建议。它说它可以完成,但没有显示它是如何完成的。
有什么建议么?
iphone - 实体 xxx 不符合键“(null)”的键值编码
我正在尝试为核心数据实体编写一个简单的表视图编辑器。不幸的是,我遇到了问题。
将第一个实体添加到表时发生错误。调出模态对话框的过程如下:
在里面NameEditController
,按下完成按钮后我有这个:
我第一次创建一个对象(当列表为空时)我得到这个:
在核心数据更改处理期间捕获到异常:[valueForUndefinedKey:]:实体组不符合键“(null)”的键值编码。
如果我在弹出对话框之前填写“名称”字段,则可以成功添加第一个实体:
[newManagedObject setValue:@"New Group" forKey:@"name"]; // 这行得通
我NSFetchedResultsController
用来管理表视图顺便说一句。
谢谢!
iphone - 如何控制 UISearchDisplayController 自己的表格视图?
在我的应用程序中,当我没有过滤我的表格时,当我点击一个单元格时,它的框架高度会增加以显示一个UIProgressView
显示下载进度的。
但是,当我使用 a 过滤获取的结果控制器数据时UISearchDisplayController
,此过滤后的表格视图中的单元格的行为方式不同。
相反,单元格不会调整大小,不会显示进度视图,不会触发下载,并且应用程序随后会崩溃。
如何控制使用过滤结果时显示的表格视图UISearchDisplayController
?
编辑
这是我的-tableView:didSelectRowAtIndexPath:
方法。它有点长,但要点是当我不搜索时它可以正常工作。
我认为我需要以某种方式对此进行调整,以便它可以与搜索结果控制器抛出的任何表视图/获取的结果控制器一起使用。