1

次のビューに渡す前に、Person NSManagedObject をリロードする必要があります。

これは、私が使用している fetchedResultsController が属性のサブセットのみを返し、次のビューで完全なセットが必要なためです。

これまでのところ、私は次のようなことを試みています:

- (void)tableView:(UITableView *)tableViewPassed didSelectRowAtIndexPath:(NSIndexPath *)indexPath {        
        Person *partialPerson = (Person *)[self.fetchedResultsController objectAtIndexPath:indexPath];

   NSEntityDescription *entity = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:[partialPerson.managedObjectContext]];

    NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];
    [request setEntity:entity];
...

これまでのところ、これを正しく機能させるための述語を取得できないようです。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF == %@", partialPerson];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF == %@", partialPerson.objectID];

しかし、これらのどちらも機能していないようです。ここで何が間違っていますか?これは良いアプローチですか?

提案をお寄せいただきありがとうございます、マット

4

2 に答える 2

1

フォルトされていない属性にアクセスするだけで、それらは自動的にフォルトされます。オブジェクトを再フェッチする必要はまったくありません。

アップデート

画像やバイナリ データを Core Data に格納するには、従うべきいくつかの基本的なルールがあります。

< 100kb store it in the same entity
< 1 mb store it in a separate entity on the other end of a relationship
> 1 mb store it on disk and reference it in the same entity

プライマリ テーブルに格納しているバイナリ データが多すぎるようです。これを修正するには、上記のルールに従ってください。これで問題が解決します。

しかし、それは私の元の答えを否定するものではなく、フェッチに attribute1、attribute3、および attribute5 をプルするように指示することができます。あなたはそれにアクセスしようとします。この状況でオブジェクトを「リロード」する理由はありません。

于 2010-02-11T23:27:42.090 に答える
0

なぜ partialPerson を再取得する必要があるのですか?

それを次のビューに渡すだけで完了です!!! 次のビューで partialPerson 変数を使用して、必要なことをすべて行うことができます。再取得する必要がある理由がわかりません。

myViewController.myPartialPerson = partialPerson;
于 2010-02-12T11:39:47.720 に答える