在核心数据中,我设置了一个名为 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”而终止应用程序,原因:“-[GolferObjectencodeWithCoder:]:无法识别的选择器发送到实例 0x4b7520”
-- 我的代码中没有分配 NSKeyedArchiver,所以我假设这是由核心数据完成的事情?我的 GolferObject 也没有encodeWithCoder 方法?我不知道这是从哪里来的?
最佳答案
在提交到 CoreData 中的自定义对象之前,我需要进行编码。我需要使用 - (void)encodeWithCoder:(NSCoder *)encoder;和 - (id)initWithCoder:(NSCoder *)解码器;方法。
关于ios - NSKeyedArchiver 在没有调用 -finishEncoding 的情况下被释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9433524/