3

私が取り組んでいるアプリは、それぞれがテーブル ビュー コントローラーに属する 2 つのクラスで構成されています (アプリはマスター/詳細アプリに似ていると言えます)。最初のクラス、具体的には prepareForSegue メソッドで、NSMangedObject を渡して、次のビューが管理対象オブジェクトの属性に何かを追加できるようにしました。

最初のクラスで次のように入力しました。

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue destinationViewController] isKindOfClass:[SSCViewController class]]) {
        NSManagedObject *selectedObject = [objects objectAtIndex:[[self.tableView indexPathForSelectedRow] row]];
        SSCViewController *destinationViewController = segue.destinationViewController;
        destinationViewController.managedObject = selectedObject;
    }
}

2 番目のクラス .h ファイルには、次のプロパティがあります。

@property (strong, nonatomic) NSManagedObject *managedObject;

したがって、私のデータ モデルは、逆の 1 対多の関係を持つ 2 つのエンティティで構成されています。「managedObject」の NSSet にアクセスして、何かが含まれているかどうかを確認したり、追加されたエンティティがあることを確認したりします。[self.managedObject allObjects] と [self.managedObject hasObjects] を試しましたが、どちらも機能しませんでした (hasObjects は、管理対象オブジェクトと他のエンティティとの関係の名前です)。管理対象オブジェクトの関係にアクセスして NSSet を返すにはどうすればよいですか?

4

1 に答える 1

3

コア データ属性の名前が「toManyRelation」の場合は、

NSSet *mySet = [self.managedObject valueForKey:@"toManyRelation"];

...そしてそこから行きます。

この問題を始めてみると、これらのことはあまり明白ではないことを、私は痛ましい経験から知っています。しかし、それを知ってしまえば、それは非常に単純であることが判明しました。

于 2013-03-10T11:37:22.463 に答える