小编Ale*_*lor的帖子

如何停止符号添加"<redacted>"片段到iOS崩溃日志

我从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)

ios

15
推荐指数
2
解决办法
1万
查看次数

如何处理REST API中的大量资源

我正在将一个REST接口用于现有应用程序,我很好奇最合适的解决方案是什么来处理资源,如果要检索它们将返回过多的数据.

该应用程序是现有的时间表系统,其中一个资源是一组用户的"时间段".这些资源的示例URI是:

/users/44/timeslots/
Run Code Online (Sandbox Code Playgroud)

我已经阅读了很多与如何为此资源提供过滤以检索子集有关的问题,我已经有了解决方法.

我想知道如何(或者如果)我应该处理在上面的URI上发出GET将从数十或数十万行返回兆字节数据的情况,并且需要相当数量的服务器资源来实际响应第一名.

  • 在这些情况下,是否存在惯例使用的HTTP响应?
    我发现HTTP代码413与Request实体相关,该实体太大,但不适用于当Response实体太大时
  • 是否存在限制响应或告诉客户这是一个愚蠢的请求的替代约定?
  • 我应该让服务器遵守这个大规模的请求吗?

编辑:要清楚,我已经过滤和拆分实现的资源,并考虑了其他大型集合资源的分页.我想适当地回应那些没有意义的请求(显然是由构建URI的客户端请求的).

rest

12
推荐指数
1
解决办法
7728
查看次数

移动部分中的最后一行时UITableView endUpdates崩溃

我有一个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]调用时肯定会更新.

有没有人有任何调试技巧,指针或解决方案? 这篇博客文章提示解决创建新部分的类似问题.

如果我不能解决这个问题,我有两个选择:

  1. 在行上放弃动画并简单地调用 [tableView reloadData]
  2. 切换到使用NSArray支持的存储为UITableView,并希望最好的

更新

我修改了Apple示例Core Data应用程序"Locations"以直接使用NSFetchedResultsController并重现该问题. 我已经上传了这个项目的源代码.使用该项目重现该问题.

  1. 只需单击+按钮几次然后等待
  2. 每5秒将一个项目移动到另一个类别.
  3. 当第一类即将被清空时,它会崩溃.

崩溃有时是关于为该主题创建与其他StackOverflow问题相同的单元格的两个动画.更常见的是,碰撞如上下文所述. …

core-data objective-c nsfetchedresultscontroller ios

10
推荐指数
1
解决办法
6808
查看次数