0

CoreDatarelationshipの使用について誤解があります。

私がSQLの時代から覚えていること(ずっと前...)、テーブル間の関係を作成するエントリとなる各テーブルにIDを追加する必要があります。

私のテーブルが私のCoreData(エンティティ)でどのように見えるかの概要の下。

Epro_Sheetは私のメインテーブルであり、他のテーブルはそのテーブルに関連付ける必要があります。

私がやりたいことはそれです:

  • EPro_CompanyViewControllerユーザーは、独自のエンティティを持つUIViewController () のフィールドに入力します。EPro_Company
  • 次に、次を押すと、 create EPro_Sheet、インクリメント idSheet 、その他のエントリが入力されます。さらにEPro_Company、EPro_CompanyViewController のフィールド テキストが入力されます。
  • 次に、ユーザーが のフィールドに入力しEPro_DaFroidViewController、次に押すと、エンティティ EPro_DaFroid が入力されます。現在の EPro_Sheet の現在の Id を取得し、それを EPro_DaFroid に設定します...
  • 等....
  • ユーザーが特定の日付のすべての情報を取得して編集または表示できるようにする UIViewController ( History ) があります。

方法を教えてください。関係があるかどうか...関係がある場合、次のようなNSPredicateFormatを使用して情報を取得するにはどうすればよいですか: @" .... "; 日付からすべての情報を取得します。

助けてくれてありがとう!

ここに画像の説明を入力

4

1 に答える 1

1

まず、コアデータはリレーショナルデータベースではなく、主キーなどの概念は存在しないことを理解する必要があります。実装はあなたに任されています。これに関する詳細はここで見つけることができます:

コアデータとRDBMS

そしてここ

コアデータとデータベースの違い

コアデータにリレーションシップを実装する必要がある場合は、コアデータモデルにリレーションシップを作成する必要があります。あなたがこのような関係を持っていると想像してください:

学生<->>セクション

つまり、1人の学生が1つのセクションに属し、1つのセクションに多くの学生を含めることができます。oneSection次に、コアデータモデルで、StudentからSectionへの1対1の関係(たとえば)と、SectionからStudentへの1対多の関係(たとえば)を定義できますmanyStudents。次に、関係を相互の逆関係として設定します。

これを関係として宣言しますが、ほとんどの場合、管理対象オブジェクトのプロパティとして機能します。

studObj1したがって、 and studObj2( Entity)という管理対象オブジェクトがある場合は、Student次のような関係をセクションオブジェクト(sectionObj)に設定します。

(管理対象サブクラスを作成すると仮定します)

Student *studObj1= <create object>
Student *studObj2= <create object>

Section *sectionObj = <create object>

//set one-to-one relationship
studObj1.oneSection = sectionObj;
studObj2.oneSection = sectionObj;

//set one-to-many relationship;

NSSet *studSet = [NSSet setWithObjects:studObj1,studObj2,nil];
sectionObj.manyStudents = studSet;

述語に関しては、関係のプロパティを直接使用できます。セクションに基づいて学生を取得したい場合は、次のような述語を作成できます。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"oneSection.name like 'MainSection'"];
于 2013-03-21T11:09:02.577 に答える