TL; DR EDIT答え中間テーブルと多くの関係に多くのコアデータ(スウィフト2)
とウェインは完全に答えたように、この私は今、自分の情報を取得する方法である:
let ingredientsToRecipe = recipe.valueForKey("ingredientsToRecipe")! as! NSSet
for i in ingredientsToRecipe {
print(i.valueForKey("amount")!)
print(i.valueForKeyPath("ingredient.name")!)
}
オリジナル質問
私はCoreDataで中間テーブルの使用方法を理解する大きな問題を抱えています。私は答えをSO検索し、中間テーブルと多対多の関係が、私を助けていないところのいずれかのObjective-Cまたはそれらについてのいくつかのスレッドを発見しました。
私は次のセットアップ(簡体字)があります。今、私は原料の束を使用して新しいレシピを追加したい
を。 バーガーを考えてみましょう。バーガーは、これは
- 1 cocumber、
- 1トマト、
- 1肉、
2パン
(おいしい...)で構成されてい私がこれまで試した:
// Core Data let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate let managedContext = appDelegate.managedObjectContext let entity = NSEntityDescription.entityForName("Recipe", inManagedObjectContext:managedContext) // creating a new recipe with name and id let recipe = NSManagedObject(entity: entity!, insertIntoManagedObjectContext: managedContext) recipe.setValue("Burger", forKey: "name") recipe.setValue("B_001", forKey: "id")
今、私は成分のうち
Array:[NSManagedObject]
(バーガーのように作られた)とDictionary
のamount_IDsを得ました。これは私のレシピと(中間のテーブル上の)成分と結婚しようとしているところです。すべてが何らかの形で上記の作品このdo { try managedContext.save() print("Saved successfully") self.dismissViewControllerAnimated(true, completion: nil) } catch let error as NSError { print("Could not save \(error), \(error.userInfo)") }
:
は最後に、私は単純にすべてのものを保存します。しかし、今私は自分のレシピについての情報を取得するのに苦労しています。どのように私は、この特定のバーガーのトマトの量を取得することが出来るのです ?for i in selectedIngredients { // the ingredient array let ingredientsToRecipe = NSEntityDescription.insertNewObjectForEntityForName("RecipeIngredient", inManagedObjectContext: managedContext) ingredientsToRecipe.setValue(i, forKey: "ingredient") ingredientsToRecipe.setValue(recipe, forKey: "recipe") let quantity = Double(quantityDictionary[(i.valueForKey("id") as! String)]!) // the amount-to-ID dictionary ingredientsToRecipe.setValue("\(quantity)", forKey: "quantity") }
のようなものは
recipe.valueForKey("RecipeIngredient").valueForKey("amount")
のように機能しますが、どの成分がどの成分であるのかわかりません。 何か間違っていますか? どうすればいいですか?目標は、食材とレシピを作成し、後でレシピとそれの成分の量(および成分そのもの)に関する情報を表に移入することです。
ご協力いただきありがとうございます。
Omgありがとうございます。私は私の頭の中にこのようなブロックを持っていた。このように魅力的な作品。二度upvoteできませんが、抱擁を感じてください! – Akaino