类型'[NSManagedObject]'的值永远不能为零,不允许比较

时间:2015-11-06 09:17:10

标签: xcode swift2.1

您好我正在尝试修复SugarRecord,这是使用CoreData和iCloud的好方法。

我使用以下方法收到上述错误:

 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 {

虽然搜索网后我找不到办法解决这个问题。如果你能提供帮助,谢谢你。

1 个答案:

答案 0 :(得分: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()
  }
}