2015-10-10 56 views
0

我想在tableviewcontroller中顯示搜索到的核心數據結果。我知道如何在tableview中顯示核心數據,但我想要在tableviewcontroller中顯示特定的數據。如何在Tableviewcontroller中顯示搜索結果?

像,當用戶從uipickerview中選擇特定的城市,然後根據特定的城市從tableviewcontroller中顯示核心數據的結果。

下面列出了一些代碼。

進口的UIKit 進口CoreData

類MenuhospitalTableViewController:{的UITableViewController

private var hospitalcoredata: [Hospitalcoredata] = [] 
var fetchResultController:NSFetchedResultsController! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    Load menu items from database 
    if let managedObjectContextt = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContextt { 
     let fetchRequest = NSFetchRequest(entityName: "Hospitalcoredata") 
     var e: NSError? 
     hospitalcoredata = managedObjectContextt.executeFetchRequest(fetchRequest, error: &e) as! [Hospitalcoredata] 
     if e != nil { 
      println("Failed to retrieve record: \(e!.localizedDescription)") 
     } 
    } 


    // Make the cell self size 
    self.tableView.estimatedRowHeight = 66.0 
    self.tableView.rowHeight = UITableViewAutomaticDimension 
    self.tableView.layoutIfNeeded() 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

// MARK: - Table view data source 

override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
    // Return the number of sections. 
    return 1 
} 



override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    // Return the number of rows in the section. 
    return hospitalcoredata.count 
} 

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! MenuhospitalTableViewCell 

    // Configure the cell... 
    cell.nameLabel.text = hospitalcoredata[indexPath.row].namee 
    cell.contactnoLabel.text = hospitalcoredata[indexPath.row].contactnoo 
    //  cell.priceLabel.text = "$\(menuItems[indexPath.row].price as! Double)" 

    return cell 
} 

/* 
// MARK: - Navigation 

// In a storyboard-based application, you will often want to do a little preparation before navigation 
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
// Get the new view controller using [segue destinationViewController]. 
// Pass the selected object to the new view controller. 
} 
*/} 

和代碼找到從城市數據給出如下..

let entityDescription = 
    NSEntityDescription.entityForName("Register", 
     inManagedObjectContext: managedObjectContext!) 

    let request = NSFetchRequest() 
    request.entity = entityDescription 

    let pred = NSPredicate(format: "(name = %@)", name.text) 
    request.predicate = pred 

    var error: NSError? 

    var objects = managedObjectContext?.executeFetchRequest(request, 
     error: &error) 

    if let results = objects { 

     if results.count > 0 { 
      let match = results[0] as! NSManagedObject 

      name.text = match.valueForKey("name") as! String 
      contactno.text = match.valueForKey("contactno") as! String 
      altno.text = match.valueForKey("altno") as! String 
      emailid.text = match.valueForKey("emailid") as! String 
      textf.text = match.valueForKey("bloodgroup") as! String 
      textff.text = match.valueForKey("city") as! String 

      status.text = "Matches found: \(results.count)" 
     } else { 
      status.text = "No Match" 
     } 
    } 
} 

我想查詢股價這兩編碼並顯示相應的核心數據「城市」選擇。

回答

0

經過大量嘗試,我的項目指南(教授CHIRAG潘迪亞)的幫助下,

答:在第一個視圖控制器

使用preparesegue方法, 給推賽格瑞的名字, 使用SEGUE名, 在第二個視圖控制器中創建謂詞並使用第一個視圖控制器。 改變搜索和排序有用

代碼: 1)(firstviewcontroller)

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if(segue.identifier=="segueTest"){ 
     var svc = segue.destinationViewController as! MenuhospitalTableViewController 
     svc.toPass = textff.text 
    } 
} 

2)(secondviewcontroller)

let pred = NSPredicate(format: "(city = %@)", toPass) 
     fetchRequest.predicate = pred 
1

您應該使用NSFetchedResultsController填充您的表格視圖。在更新表格視圖之前,將動態謂詞添加到其獲取請求和performFetch

+0

我試試你的方法,但出現錯誤,因爲我想來自醫院視圖控制器的搜索結果以及用於獲取和排序的代碼被添加到另一個視圖控制器。我可以使用第一個文本字段到下一個視圖控制器?怎麼可能..謝謝回覆@Mundi –

+0

當然。只需將字符串從文本字段傳遞到下一個視圖控制器,並使用它來構造謂詞。 – Mundi

+0

感謝@Mundi的幫助.. –