【发布时间】:2011-03-21 13:25:04
【问题描述】:
嘿,我已经为数据库访问创建了一个自定义检索方法:
+(NSArray*) recordsForTable:(NSString *)table predicate:(NSPredicate *)prd{
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:table inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
[fetchRequest setPredicate:prd];
NSArray *records = [managedObjectContext executeFetchRequest:fetchRequest error:nil];
[fetchRequest release];
return records;
}
然后我在这个方法中使用上面的方法:
-(NSArray *)tableViewControllerData{
NSNumber *savedBool = [[NSNumber alloc] initWithBool:YES];
NSString *onlyGetSavedVisitObjects = [NSString stringWithFormat:@"bolSaved=%@", savedBool];
[savedBool release];
NSMutableArray *data = [[[CoreDataAccess recordsForTable:@"LPVisit" stringPredicate:onlyGetSavedVisitObjects] mutableCopy] autorelease];
NSSortDescriptor *dateDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"dteVisitDate" ascending:NO];
NSArray *descriptors = [NSArray arrayWithObjects:dateDescriptor, nil];
[data sortedArrayUsingDescriptors:descriptors];
return data;
}
我遇到的问题是,当用户对 LPVisit 表进行更改并调用此方法以显示这些更改时,它会使应用程序崩溃。
[编辑]
它产生的异常是:
-[__NSArrayM objectID]: unrecognized selector sent to instance 0x4dac1f0
我相信错误出现在以下行:
NSMutableArray *data = [[[CoreDataAccess recordsForTable:@"LPVisit" stringPredicate:onlyGetSavedVisitObjects] mutableCopy] autorelease];
如果我删除自动释放,我会遇到内存泄漏,但应用程序不会崩溃。
有人有什么见解吗,先谢谢了
【问题讨论】:
-
不使用 NSFetchedResultsController 的任何原因。您可以直接从 NSFetchedResultsControllerDelegate 处理任何更新/删除/插入表。
-
@rckoenes 它是一个现有的应用程序(我没有创建),我希望只是滴入代码并添加上述方法有助于的编辑功能
-
您有任何崩溃消息给我们,这将使我们有更多的工作要做。
-
@rckoenes 抱歉。我已经更新了原始帖子以包含错误消息和我认为它发生的行
标签: iphone objective-c memory-leaks nsfetchrequest