2015-11-06 68 views
0

嗨我試圖修復SugarRecord使用CoreData和iCloud的好方法。類型'[NSManagedObject]'的值永遠不能爲零,不允許比較

我得到上面用下面的方法這個錯誤:

public func find(finder: SugarRecordFinder) -> SugarRecordResults 
    { 

     let fetchRequest: NSFetchRequest = SugarRecordCDContext.fetchRequest(fromFinder: finder) 



     var objects = [NSManagedObject]() 
     do{ 
       objects = try self.contextCD.executeFetchRequest(fetchRequest) as! [NSManagedObject] 

     } 
     catch 
     { 

     } 
     if objects == nil { 
      objects = [NSManagedObject]() 
     } 

     return SugarRecordResults(results: SugarRecordArray(array: objects), finder: finder) 
    } 

錯誤是上線 - if objects == nil {

雖然搜索網後,我無法找到一個方法來解決這個問題。謝謝,如果你能幫忙。

+0

記住,你可以檢查零隻自選,你的情況Objects是不可選的,這就是爲什麼你得到這個錯誤。相反,檢查對象是否包含任何項目。 – Shripada

回答

1

executeFetchRequest總是返回一個數組。如果什麼都找不到,這個數組就是空的。

只要刪除

if objects == nil { 
    objects = [NSManagedObject]() 
} 

一個更好的語法是

public func find(finder: SugarRecordFinder) -> SugarRecordResults 
{ 

    let fetchRequest: NSFetchRequest = SugarRecordCDContext.fetchRequest(fromFinder: finder) 
    do { 
    let objects = try self.contextCD.executeFetchRequest(fetchRequest) as! [NSManagedObject] 
    return SugarRecordResults(results: SugarRecordArray(array: objects), finder: finder) 
    } 
    catch let error as NSError { 
    // do error handling 
    return SugarRecordResults() 
    } 
} 
+0

嗨,太棒了。儘管我在返回SugarRecordResults()時遇到錯誤 –

相關問題