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

我强烈反对这种应用程序设计。您应该使用 Core Data 来持久化Model的数据,而不是任何View,更不用说Controller了。

请阅读“Cocoa 核心能力:模型-视图-控制器”

于 2013-03-08T12:32:19.790 回答
0

这行代码返回 NSArray 的 NSData 对象:

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

所以这将起作用:

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