2016-02-15 94 views
0

我是一個新的迅速和CoreData和我有一個問題:搜索數據,並迅速

  1. 我有DB 2列:「名稱」和「號碼」,例如 名稱數量 鮑勃2 海倫娜5 海爾格1 明德0

  2. 我我的UITableViewController連接與整個CoreData數據庫,它的工作(我看到所有DB在我的iPhone的模擬器)

  3. 我想用我的DB單元格中的值「1」和「2」列的「數字」來查找,並顯示列「名稱」中的適當單元格,結果我想查看: Bob 2 Helga 1

如何更好地做到這一點?我試圖與NSPredicate一起工作,但我不明白它是如何工作的以及如何進行工作。

謝謝!

回答

1

Hi加下面的功能在您的NSManagedObject擴展

1)使用ID取從coredata數據預測

class func Search(PredictName:String, Uid:String, entityDescription: String,managedObjectContext: NSManagedObjectContext = appDelegate.managedObjectContext) -> [AnyObject]? 
{ 
    var ar:[AnyObject] = [] 
    do 
    { 
     let predicate = NSPredicate(format: "\(PredictName) == %@", Uid) 
     let request = NSFetchRequest(entityName: entityDescription) 
        request.predicate = predicate 
     let result = try managedObjectContext.executeFetchRequest(request) 
        ar = result 
       } 
       catch(_) 
       { 
        ar = [] 
       } 
       return ar as [AnyObject] 
      } 

Function Call : 
var lists:[ModelClassName]? = AdvertisementDataList.findByTypeInContext("user_id", url: self.Uid, entityDescription: "CoredataEntityName") as? [AdvertisementDataList] 

它會回報你的行ID預測列名數據

2)從coredata獲取所有數據

class func Search(PredictName:String, entityDescription: String,managedObjectContext: NSManagedObjectContext = appDelegate.managedObjectContext) -> [AnyObject]? 
     { 
      var ar:[AnyObject] = [] 
      do 
      { 
       let predicate = NSPredicate(format: "\(PredictName)") 
       let request = NSFetchRequest(entityName: entityDescription) 
       request.predicate = predicate 
       let result = try managedObjectContext.executeFetchRequest(request) 
       ar = result 
      } 
      catch(_) 
      { 
       ar = [] 
      } 
      return ar as [AnyObject] 
     } 

函數調用:

var lists:[ModelClassName]? = AdvertisementDataList.findByTypeInContext("user_id", entityDescription: "CoredataEntityName") as? [AdvertisementDataList] 

它將通過預測名稱返回所有數據。