【问题标题】:NSKeyedArchiver deallocated without having had -finishEncoding called on itNSKeyedArchiver 在没有调用 -finishEncoding 的情况下被释放
【发布时间】:2012-03-15 01:36:20
【问题描述】:

在核心数据中,我设置了一个名为 GolferEntity 的简单实体,它仅包含一个 golferObject(可转换类型)和 playerId(字符串)。

- (void)addOrUpdateGolfer:(GolferObject *)feedObj
{   
    NSLog(@"In add or update Feed");

// get reference to local (stored) golfer item, create it if needed
Golfer *localGolfer = [self golferForId:[feedObj PlayerId]];
if (localGolfer == nil) {
    localGolfer = (Golfer *)[NSEntityDescription insertNewObjectForEntityForName:@"GolferEntity" inManagedObjectContext:[self managedObjectContext]];
    [localGolfer setPlayerId:[feedObj PlayerId]];
}

// set folder fields
[localGolfer setGolferObj:feedObj];

// apply update
NSError *error;
if (![managedObjectContext save:&error]) {
    NSLog(@"%@", [error localizedDescription]);
    //      return nil;
}
NSLog(@"successfully saved user: %@", [feedObj PlayerId]);
//return localFolder;
}

代码给了我一个运行时错误,内容如下: * -[NSKeyedArchiver dealloc]:警告:NSKeyedArchiver 在没有调用 -finishEncoding 的情况下被释放。 * 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[GolferObject encodeWithCoder:]: unrecognized selector sent to instance 0x4b7520”

-- 在我的代码中没有分配 NSKeyedArchiver,所以我假设这是由核心数据完成的?我的 GolferObject 也没有 encodeWithCoder 方法吗?我不知道这是从哪里来的?

【问题讨论】:

  • 您是否得到了 -[NSKeyedArchiver dealloc] 警告的回溯?在 Xcode 中的 -[NSKeyedArchiver dealloc] 上设置断点,以便您可以看到调用的来源。
  • 我没有在我的代码中任何地方写过“NSKeyedArchiver”。这就是问题所在。我对这个问题的来源/来源一无所知。我假设可转换类型属性可以包含自定义对象来构建实体。
  • 对,听起来 NSKeyedArchiver 是由您正在使用的类或框架管理的。尽管您不直接对 NSKeyedArchiver 对象负责,但您的代码可能会出现以这种无益的方式表现出来的错误。如果设置断点并获得回溯,这可以作为调试的起点。
  • 您解决了吗?我也有同样的问题。
  • 是的,我需要在提交到 CoreData 中的自定义对象之前进行编码。我需要使用 - (void)encodeWithCoder:(NSCoder *)encoder;和 - (id)initWithCoder:(NSCoder *)decoder;方法。

标签: ios core-data nskeyedarchiver


【解决方案1】:

在提交给我在 CoreData 中的自定义对象之前,我需要进行编码。我需要使用 - (void)encodeWithCoder:(NSCoder *)encoder;和 - (id)initWithCoder:(NSCoder *)decoder;方法。

【讨论】:

    猜你喜欢
    • 2011-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-03
    • 2015-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多