我从App Store中的iPhone应用程序(通过iTunes Connect检索)获得了崩溃日志,在符号化后有一堆来自CodeData和CoreFoundation的"<redacted>"方法名称.
iTunes Connect中的原始崩溃日志文件如下所示:
Last Exception Backtrace:
0 CoreFoundation 0x34a0929e __exceptionPreprocess
1 libobjc.A.dylib 0x32d1997a objc_exception_throw
2 CoreData 0x3631fec2 -[NSSQLCore _obtainOpenChannel]
3 CoreData 0x363cfd9c newFetchedRowsForFetchPlan_MT
4 CoreData 0x363b3be6 -[NSSQLCore newFetchedPKsForSourceID:andRelationship:]
5 CoreData 0x363a6008 -[NSSQLCore newValueForRelationship:forObjectWithID:withContext:error:]
6 CoreData 0x3635690a -[NSFaultHandler retainedFulfillAggregateFaultForObject:andRelationship:withContext:]
7 CoreData 0x36326d48 -[_NSFaultingMutableSet willRead]
8 CoreData 0x3632767c -[_NSFaultingMutableSet allObjects]
Run Code Online (Sandbox Code Playgroud)
在我的Mac上进行符号化后,日志看起来像这样:
Last Exception Backtrace:
0 CoreFoundation 0x34a0929e <redacted> + 158
1 libobjc.A.dylib 0x32d1997a objc_exception_throw + 26
2 CoreData 0x3631fec2 <redacted> + 230
3 CoreData 0x363cfd9c <redacted> + 948
4 CoreData …Run Code Online (Sandbox Code Playgroud) 我正在将一个REST接口用于现有应用程序,我很好奇最合适的解决方案是什么来处理资源,如果要检索它们将返回过多的数据.
该应用程序是现有的时间表系统,其中一个资源是一组用户的"时间段".这些资源的示例URI是:
/users/44/timeslots/
Run Code Online (Sandbox Code Playgroud)
我已经阅读了很多与如何为此资源提供过滤以检索子集有关的问题,我已经有了解决方法.
我想知道如何(或者如果)我应该处理在上面的URI上发出GET将从数十或数十万行返回兆字节数据的情况,并且需要相当数量的服务器资源来实际响应第一名.
编辑:要清楚,我已经过滤和拆分实现的资源,并考虑了其他大型集合资源的分页.我想适当地回应那些没有意义的请求(显然是由构建URI的客户端请求的).
我有一个UITableViewController,它由NSFetchedResultsController支持.
我的NSFetchedResultsController根据布尔值将结果放入两个部分.
在后台线程中,更改数据源以便添加或删除行.我有我的后台线程的NSManagedObjectContext正确合并,这种情况适用于大多数情况.数据更改时行会更改,并在带动画的部分之间移动.
但有一种情况是我的应用程序崩溃了EXC_BAD_ACCESS.这种情况是一个部分中的最后一行移动到另一部分.(下面的堆栈跟踪).崩溃发生在objc_msgSend中,但我使用的正常调试提示没有返回任何有用的东西,我只是收到"值无法转换为整数" gdb.
NSFetchedResultsControllerDelegate方法按以下顺序调用:
- (void)controllerWillChangeContent:(NSFetchedResultsController *)controller;
- (void)controller:(NSFetchedResultsController *)controller didChangeSection:(id <NSFetchedResultsSectionInfo>)sectionInfo atIndex:(NSUInteger)sectionIndex forChangeType:(NSFetchedResultsChangeType)type;
// ^ The parameters specify a deletion of the 1st section
- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath *)newIndexPath;
// ^ The parameters specify a moved row from the 1st section to the 1st section
- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller;
Run Code Online (Sandbox Code Playgroud)
通过StackOverflow,许多遇到类似问题的人正在使用NSArray或NSMutableArray手动备份他们的UITableViewController,他们只是没有在正确的时间更新数据源.在这种情况下,NSFetchedResultsController正在处理返回的行数和节数,并且在[tableView endUpdates]调用时肯定会更新.
有没有人有任何调试技巧,指针或解决方案? 这篇博客文章提示解决创建新部分的类似问题.
如果我不能解决这个问题,我有两个选择:
[tableView reloadData]我修改了Apple示例Core Data应用程序"Locations"以直接使用NSFetchedResultsController并重现该问题. 我已经上传了这个项目的源代码.使用该项目重现该问题.
崩溃有时是关于为该主题创建与其他StackOverflow问题相同的单元格的两个动画.更常见的是,碰撞如上下文所述. …