0

uiviewcontrollerクラスをcoredataに保存し、ボタンをクリックするだけでcoredataから取得したいと思います。私はnsarchiverとnsunarchiverでそれを試しました。クラスをnsdataに変換し、coredataに保存します。しかし、取得時にエラーが発生しました:

-[__ NSArrayIバイト]:認識されないセレクターがインスタンス0x6d442a0に送信されました私のコードは以下のとおりです

// the button press for saving the object

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:viewcontrollerobject];
ViewData *viewdetails=[NSEntityDescription insertNewObjectForEntityForName:@"ViewData" inManagedObjectContext:[self managedObjectContext]];

viewdetails.view = data;
viewdetails.order = [NSNumber numberWithInt:1];
[self.fetchedResultsController performFetch:nil];


//button press for retrieving the class
[self.fetchedResultsController performFetch:nil];


NSData *theData;
theData =  [fetchedResultsController.fetchedObjects valueForKey:@"view"];

viewcontroller *newviewcontrollerobject; 
newviewcontrollerobject=[NSKeyedUnarchiver unarchiveObjectWithData:theData];

[newviewcontrollerobject.view setFrame:CGRectMake(200, 200, 300, 150)];
[self.view addSubview:newviewcontrollerobject.view];

このコードを修正するのを手伝ってください

4

2 に答える 2

3

このアプリケーションの設計に反対することを強くお勧めします。Controllerはもちろん、 Viewではなく、 Modelのデータを永続化するには Core Data を使用する必要があります。

「Cocoa Core Competencies: Model-View-Controller」を読んでください。

于 2013-03-08T12:32:19.790 に答える
0

このコード行は、NSData オブジェクトの NSArray を返します。

[fetchedResultsController.fetchedObjects valueForKey:@"view"];

したがって、これは機能します:

NSArray* theDataArray =  [fetchedResultsController.fetchedObjects valueForKey:@"view"];
theData =  [theDataArray lastObject];
于 2013-03-08T12:14:48.590 に答える