【发布时间】:2013-08-06 10:23:23
【问题描述】:
我收到以下错误[context save:&error]。我该如何解决?
发送到类的无法识别的选择器 * -[NSKeyedArchiver dealloc]:警告:NSKeyedArchiver 在没有调用 -finishEncoding 的情况下被释放。 * 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“+[TempObject encodeWithCoder:]: 无法识别的选择器发送到类'
这是我正在使用的代码。
NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
PostRequest *postRequestObject = (PostRequest *)[NSEntityDescription insertNewObjectForEntityForName:@"PostRequest" inManagedObjectContext:context];
DummyClass *request = OtherClassObject;
postRequestObject.request = request;
// request is attribute with type transformable
NSLog(@"requestpost data -> %@",postRequestObject.request);
NSError *error = nil;
if (![context save:&error]) {
// Replace this implementation with code to handle the error appropriately.
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
#pragma mark - private method
- (NSFetchedResultsController *)fetchedResultsController
{
if (_fetchedResultsController != nil)
{
return _fetchedResultsController;
}
NSFetchRequest *fetchRequest = [[[NSFetchRequest alloc] init] autorelease];
// Edit the entity name as appropriate.
NSEntityDescription *entity = [NSEntityDescription entityForName:@"PostRequest" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
[fetchRequest setFetchBatchSize:80];
// Edit the sort key as appropriate.
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"status" ascending:NO];
NSArray *sortDescriptors = @[sortDescriptor];
[sortDescriptor autorelease];
[fetchRequest setSortDescriptors:sortDescriptors];
NSFetchedResultsController *aFetchedResultsController = [[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:@"root"] autorelease];
aFetchedResultsController.delegate = self;
self.fetchedResultsController = aFetchedResultsController;
NSError *error = nil;
if (![self.fetchedResultsController performFetch:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
return _fetchedResultsController;
}
【问题讨论】:
-
这个讨论和stackoverflow.com/questions/18072849/…一样吗?如果是这样,请删除此问题(或以前的问题)。
-
而且上下文可能很有用。您要保存哪些数据?
-
数据是带参数的请求。
-
什么是
TempObject,你是如何使用它的?它在您的错误消息中,但不会出现在您的代码中的任何位置。 -
嗨@TomHarrington TempObject 是在当前控制器中导入的类。在 TempObject 中使用
。
标签: objective-c core-data nscoding