2015-11-06 3 views
0

Привет Я пытаюсь исправить SugarRecord отличный способ использовать CoreData и iCloud.Значение типа '[NSManagedObject]' никогда не может быть nil, сравнение не допускается

Я получаю эту ошибку выше со следующим методом:

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

Помните, что вы можете проверить ноль только дополнительные опции, в объектах Вашего случая не является обязательным, и именно поэтому вы получите эту ошибку. Вместо этого проверьте, содержат ли объекты какие-либо элементы. – Shripada

ответ

1

executeFetchRequest return всегда массив. Если ничего не найдено, массив пуст.

Просто удалите

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() –