2016-04-01 1 views
1

私は新しいレシピデータを作成するViewControllerを持っています。 新しいレシピを作成するには、タイトル、原料などを記入し、そのカテゴリを選択する必要があります。そのために、1対多の関係を持つカテゴリとレシピの実体を確立しました。Swift 2.1コアデータ - 1対多リレーションシップを持つデータを保存しますが、既存のデータを追加しない場合は

作成機能では、カテゴリエンティティに既にselectedCategoryの値があるかどうかを確認するために、次の検索が必要です。

selectedCategoryがカテゴリエンティティに既に存在する場合は、そのインデックスを見つけてそのカテゴリをRecipe Entityに割り当てる必要がありますが、ここで記述する必要があるコードはわかりません。

for category in categories { 
    if category == selectedCategory { 

     /* if selectedCategory already exists in Category entity, 
      find its index and assign that category to Recipe entity.*/ 

    } else { 
     category.name = selectedCategory 
     recipe.category = category 
    } 
} 

context.insertObject(recipe) 

do { 
    try context.save() 
} catch { 
    print("Could not save recipe") 
} 
+0

カテゴリをselectedCategoryと比較するにはどうすればよいですか?category.nameプロパティをselectedCategoryに設定するにはどうすればよいですか?どのような種類のオブジェクトがカテゴリですか? –

+0

カテゴリーを選択するのにあなたは何を使用していますか? 'UIPickerView'です。 'UIPickerView'に5つの要素(カテゴリ)があり、ユーザがDessert == 2(デリゲートを使ってインデックスを取得)、' category.type = @ 2'を挿入して新しいレシピを挿入すると、 'recipe.name =" someName "'レシピをカテゴリ '[category addRecipe:recipe]'に追加した後、コンテキストを保存します。 – Khundragpan

+0

私はカテゴリを選択するためにtableviewを使用しています。カテゴリオブジェクトにはname属性があり、デフォルトでMain、Side、Dessert、Drinkなどの値が保持されます。ユーザーはカスタムカテゴリ名を追加できますが、重複した名前の挿入を防止する必要があります。 –

答えて

1

Core Dataをサポートする1​​つのビューアプリケーションを作成しました。

私は、データモデルに2つのエンティティを追加しました:

CategoryEntityは「名前を」属性を持ちます。 RecipeEntityには属性 "title"があります。

CategoryEntityには、「レシピ」と呼ばれるRecipeEntityとの多対1の関係があります。カスケード削除ルールがあります(カテゴリを削除すると、関連するすべてのレシピも削除されます)。

RecipeEntityには、categoryEntityと「カテゴリ」という1対1の関係が必要です。

これらの関係は、それぞれ逆の関係になります。

次のコードはレシピを追加します。最初にカテゴリを取得または作成し、レシピを割り当てます。

+0

これを実証する時間をとっていただきありがとうございます。それは素晴らしい作品です。今、私はNSPredicateが既存のレコードを検索するために使用できることを知っています。 –

+0

あなたが大歓迎です、うれしかったです。 –

関連する問題