我是iOS的初学者.当我将Core Data用于我的示例项目时,它给了我一个线程错误.
请帮我解决这个错误.
这是我的代码:
-(NSFetchedResultsController*)fetchedResultController{
if (self.fetchedResultController != nil ) {
return self.fetchedResultController;
}
NSFetchRequest *request = [[NSFetchRequest alloc]init];
NSManagedObjectContext *context = [self managedObjectContext];
NSEntityDescription *entity = [NSEntityDescription insertNewObjectForEntityForName:@"Recepie" inManagedObjectContext:context];
[request setEntity:entity];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc]initWithKey:@"recepieName" ascending:YES];
NSArray *sortDescriptorArray = [[NSArray alloc]initWithObjects:sortDescriptor,nil];
request.sortDescriptors = sortDescriptorArray;
self.fetchedResultController = [[NSFetchedResultsController alloc] initWithFetchRequest: request managedObjectContext:context sectionNameKeyPath:nil cacheName:nil];
self.fetchedResultController.delegate = self;
return self.fetchedResultController;
}
Run Code Online (Sandbox Code Playgroud)
使用这样的点表示法引用属性时
if (self.fetchedResultController != nil ) {
return self.fetchedResultController;
}
Run Code Online (Sandbox Code Playgroud)
它相当于调用[self fetchedResultController]方法(这是该属性的getter).当你这样做,你已经是 getter中,因此该方法无限自称,导致堆栈溢出错误.
您不应该使用点符号来获取属性值(使用setter是正常的).改为使用支持变量:
if(_fetchedResultController != nil) {
return _fetchedResultController;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
58 次 |
| 最近记录: |