2016-08-09 3 views
1

Пожалуйста, помогите мне, я хочу сделать CoreData функцию Садись в Swift 2.2 NSPredicate массив для NSCompoundPredicateNSPredicate массив для NSCompoundPredicate

public func loadData(entityName: String, filters: [String: String] = [:], dataFault: Bool = true) -> [NSManagedObject] { 
    var listItems: [NSManagedObject]? 
    let delegate = UIApplication.sharedApplication().delegate as? AppDelegate 

    if let context = delegate?.managedObjectContext { 
     let fetchRequist = NSFetchRequest(entityName: entityName) 
     if (filters.count > 0) { 
      var predicte: [NSPredicate] 
      for (key, value) in filters { 
       let p1:NSPredicate = NSPredicate(format: "%K == %@", key, value as NSObject) 
       predicte.appendContentsOf(p1) 
      } 
      fetchRequist.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: predicte) 
     } 
     fetchRequist.returnsObjectsAsFaults = dataFault 
     do{ 
      let results = try context.executeFetchRequest(fetchRequist) 
      listItems = results as? [NSManagedObject] 
     } 
     catch let err { 
      print(err) 
     } 

    } 
    else{ 
     print("context Error") 
    } 
    return listItems! 

} 

Там показывают ошибку на predicte.appendContentsOf (p1)

+0

Дайте подробную информацию об ошибке и что вы ожидаете произойдет – Wain

ответ

1

В коде , p1 не CollectionType, поэтому вам нужно использовать append, не appendContentsOf:

   predicte.append(p1) 

Кроме того, вам нужно т о инициализации predicte соответственно:

  var predicte: [NSPredicate] = [] 
+0

Спасибо, это работа. и, пожалуйста, скажите мне, что это хороший способ кодировать или нет –

+0

@AyonSaha, извините, но я не уверен, что мой способ использования Core Data - хороший способ или нет. Я изучаю много вещей из веб-ресурсов, включая классические потоки Stack Overflow. Следи за ними. – OOPer

+0

Я не говорю о вашем решении, я говорю о своей общей функции и способе кодирования, или я пойду правильно или нет –

Смежные вопросы