2016-11-22 60 views
0

我将swift应用程序转换为3.0,并且还有一个问题。我已阅读所有说明NSFetchedResultController现在是通用的,并修改了代码,但仍然得到臭名昭着的“分号”错误。iOS10/Swift 3中的NSFetchedResultsController - 转换后仍出现错误消息

原始代码:

fileprivate lazy var jobController:NSFetchedResultsController = {() -> <<error type>> in 
     let request = NSFetchRequest(entityName: AGJobData.entityName) 
     request.sortDescriptors = [NSSortDescriptor(key: "jobNumber", ascending: true), NSSortDescriptor(key: "name", ascending: true)] 
     let controller = NSFetchedResultsController(fetchRequest: request, managedObjectContext: AGDataManager.sharedManager.managedObjectContext, sectionNameKeyPath: nil, cacheName: nil) 
     var error:NSError? = nil 
     controller.performFetch(&error) 
     controller.delegate = self 
     return controller 
     }() 

我曾修改(手动,转换器的XCode没有触及这段代码):

fileprivate lazy var jobController:NSFetchedResultsController<AGJobData>= {() -> <<error type>> in 
    let request = NSFetchRequest<AGJobData>() 
    request.sortDescriptors = [NSSortDescriptor(key: "jobNumber", ascending: true), NSSortDescriptor(key: "name", ascending: true)] 
    let controller = NSFetchedResultsController(fetchRequest: request, managedObjectContext: AGDataManager.sharedManager.managedObjectContext, sectionNameKeyPath: nil, cacheName: nil) 
    var error:NSError? = nil 
    controller.performFetch(&error) 
    controller.delegate = self 
    return controller 
    }() 

任何进一步的想法?

回答

1

错误处理也已更改。

fileprivate lazy var jobController : NSFetchedResultsController<AGJobData> = {   
    let request = NSFetchRequest<AGJobData>() 
    request.sortDescriptors = [NSSortDescriptor(key: "jobNumber", ascending: true), NSSortDescriptor(key: "name", ascending: true)] 
    let controller = NSFetchedResultsController(fetchRequest: request, managedObjectContext: AGDataManager.sharedManager.managedObjectContext, sectionNameKeyPath: nil, cacheName: nil) 
    controller.delegate = self 
    do { 
     try controller.performFetch(&error) 
    } catch { 
     print(error) 
    }  
    return controller 
}() 

这可能是因为您必须将NSFetchRequest线改为

let request = NSFetchRequest<AGJobData>(entityName: "AGJobData") 

文本字符串必须是实体的名称。

+0

谢谢,它的工作。没想到解决这么快的答案!来自慕尼黑的问候! –