2016-05-01 19 views
1

お気に入りページを作成しようとしています。ユーザーが1つのテーブルビュー内のイメージをクリックさせ、クリックしたテーブルビューのデータが別のページの別のテーブルビューに転送されるようにするにはどうすればよいですか?1つのテーブルビューセルから別のテーブルビューセルにデータを転送するにはどうすればよいですか?

@IBAction func favoritesSelected(sender: AnyObject) 
{ 
    if toggleState == 1 
    { 
     sender.setImage(UIImage(named:"Star Filled-32.png"),forState:UIControlState.Normal) 
     isFav = true 

     var appDel:AppDelegate = (UIApplication.sharedApplication().delegate as! AppDelegate) 
     var context:NSManagedObjectContext = appDel.managedObjectContext 

     var newFave = NSEntityDescription.insertNewObjectForEntityForName("Favorites", inManagedObjectContext: context) as NSManagedObject 
     newFave.setValue("" + nameLabel.text!, forKey: "favorite") 

     do 
     { 
      try context.save() 
     } 
     catch _ 
     { 
      print("error") 
     } 

     //print("\(newFave)") 
     print("Object saved") 

     toggleState = 2 
    } 

上記のコードから、ユーザーがお気に入りボタンをクリックするとどうなるかを確認できます。画像が変更され、名前がコアデータにアップロードされます。

別のテーブルビューのセルクラスに移動しようとしているので、お気に入りページに移動したときにお気に入りの名前が既に表示されます。

私はそのクラスにあるものを示しますが、間違っていると確信しています。

if (result == 2) 
    { 
     var appDel:AppDelegate = (UIApplication.sharedApplication().delegate as! AppDelegate) 
     var context:NSManagedObjectContext = appDel.managedObjectContext 

     var request = NSFetchRequest(entityName: "Favorites") 
     request.returnsObjectsAsFaults = false 

     do 
     { 
      var results:NSArray = try context.executeFetchRequest(request) 

      if (results.count <= 0) 
      { 
       print("Either all object deleted or error") 
      } 
     } 
     catch _ 
     { 
      print("error") 
     } 


    } 
    else 
    { 
     print("no show") 
    } 

答えて

1

オプション1:NSNotificationはのtableViewリロードトリガ:最初の例と文脈で星をユーザーがクリックした後

NSNotificationCenter.defaultCenter().addObserver(self, selector: "contextDidSave:", name: NSManagedObjectContextDidSaveNotification, object: nil) 

func contextDidSave(sender: NSNotification) { 
    tableView.reloadData() 
} 

を通知でのUITableView tableViewを登録が正しく保存された場合、contextDidSaveコールバックが実行され、tableViewは最新の状態でDB

オプション2:ユーザーが星をクリックし、コンテキストが保存したら、このオプションを使用するとNSFetchedResultsController

でセットアップのUITableView、iOSが自動的に選択したセルに更新をトリガします。のデフォルト値は、私のモデルオブジェクトで

1)が好きなと呼ばれるBOOLプロパティを持っている:私は次のことを行っているお気に入りの機能との私のアプリケーションでは

https://developer.apple.com/library/ios/documentation/CoreData/Reference/NSFetchedResultsController_Class/

0

:この参照のための記事を参照してください。偽です。

2)すべてのオブジェクトを一覧表示するテーブルビューで、ユーザーがお気に入りボタンをタップすると、対応するモデルオブジェクトのお気に入りプロパティをtrueに設定し、管理オブジェクトコンテキストを保存します。

3)お気に入りのオブジェクトを表示するテーブルビューで、お気に入りのプロパティを持つすべてのモデルオブジェクトのコアデータを照会し、それらの結果を照会します。あなたがNSFetchedResultControllerを使っているなら、Christopher Harrisの答えにあるように、これは自明です。

関連する問題