2016-11-22 57 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

謝謝,它的工作。沒想到解決這麼快的答案!來自慕尼黑的問候! –