从 Core Data 打印 NSError 的 userInfo 会抛出 EXC_BAD_ALLOC

Posted

技术标签:

【中文标题】从 Core Data 打印 NSError 的 userInfo 会抛出 EXC_BAD_ALLOC【英文标题】:Printing userInfo of an NSError from Core Data throws EXC_BAD_ALLOC 【发布时间】:2010-09-20 20:43:09 【问题描述】:

我正在使用这段代码(来自iphone Core Data Unresolved error while saving)来打印更详细的 NSError 对象描述:

- (NSString*)debugDescription

  NSMutableArray* errorLines = [NSMutableArray array];

  [errorLines addObject:[NSString stringWithFormat:@"Failed to save to data store: %@", [self localizedDescription]]];

  NSArray* detailedErrors = [[self userInfo] objectForKey:NSDetailedErrorsKey];
  if (detailedErrors != nil && [detailedErrors count] > 0)
  
    for (NSError* detailedError in detailedErrors)
    
      // The following line crashes the app
      [errorLines addObject:[NSString stringWithFormat:@"  DetailedError: %@", [detailedError userInfo]]];
    
  
  else
  
    [errorLines addObject:[NSString stringWithFormat:@"  %@", [self userInfo]]];
  

  return [errorLines description];

问题在于,每当我尝试访问嵌套 NSError 的 userInfo 对象时,应用程序就会崩溃并显示 EXC_BAD_ALLOC。

当我创建一个新的 NSManagedObject 并用数据填充它时,会产生有问题的错误。我在对象上分配的所有属性都保留了分配给它们的所有属性,但似乎没有正确保留某些东西。

我怎样才能找到它? NSZombieEnabled 没有告诉我任何有用的信息。

【问题讨论】:

【参考方案1】:

哦。我已经将我的一个列(和相关的赋值属性)命名为“描述”,这当然会覆盖 NSObject 的“描述”方法,从而导致不好的事情。真傻。

【讨论】:

以上是关于从 Core Data 打印 NSError 的 userInfo 会抛出 EXC_BAD_ALLOC的主要内容,如果未能解决你的问题,请参考以下文章

你如何打印出 Core Data 对象?

Core Data fetchedObjects data = nil 除了最后一个条目

iOS Core Data 保存上下文错误

将 Core Data 相关代码迁移到 Swift 2

检查Core Data中是不是存在对象[关闭]

将 Core Data 应用程序迁移到 iCloud