0

我有 2 个控制器,一个 AssignmentViewController 和一个 UITableViewController。每当创建分配并单击保存的按钮时,我需要将该分配对象发送到我的 UITableViewController(使用委托)。然后,TableView 需要将其归档到 NSMutableArray 中的文件中(TableView 必须为此应用程序进行归档/取消归档)。

并且每当加载 TableView 时,它需要取消归档数组并将作业对象显示在表格单元格中。

我已经启动了代码,但我真的不知道我在做什么正确和不正确。

该应用程序应该按此顺序运行。输入分配信息并按保存 -> 使用委托将新分配对象发送到 TableViewController -> 将 NSMutableArray 中的对象存档到文件 -> 每当屏幕上显示表格视图时,取消存档数组并在单元格中显示分配对象。

这是我所拥有的:

分配视图控制器.h

@interface Assignment : UIViewController

<
UITextViewDelegate,
AssignmentTableControllerDelegate 
//Error:Cannot find protocol declaration "AssignmentTableControllerDelegate"

>
@property(nonatomic) IBOutlet UITextField *ClassNameField;
@property(nonatomic) IBOutlet UILabel *ClassNameLabel;
@property(nonatomic) IBOutlet UITextField *AssignmentTitleField;
@property(nonatomic) IBOutlet UILabel *AssignmentTitleLabel;

@property (nonatomic, strong) Homework *homeworkAssignment;


- (IBAction)Save:(UIButton *)sender;
@end

分配视图控制器.m

- (IBAction)Save:(UIButton *)sender {


self.homeworkAssignment = [[Homework alloc] init];   
self.homeworkAssignment.className = self.ClassNameField.text;
self.homeworkAssignment.assignmentTitle = self.AssignmentTitleField.text;

//Sending info over to TableController

self.assignmentTableController.delegate= self;
self.assignmentTableController.homeworkInTable.className= self.ClassNameField.text;
 self.assignmentTableController.homeworkInTable.assignmentTitle=self.AssignmentTitleField.text;

分配表控制器.h

#import "Assignment.h"

@protocol AssignmentTableControllerDelegate;


@interface AssignmentTableController : UITableViewController

@property (nonatomic, strong) Homework *homeworkInTable;
@property (nonatomic, assign)  id <AssignmentTableControllerDelegate> delegate;
@property (nonatomic,strong) NSMutableArray *MyHomeworkArray;

-(IBAction)ArchiveData:(id)sender;

@end

@protocol AssignmentTableControllerDelegate <NSObject>

-(NSMutableArray *)UnarchiveData;
@end

AssignmentTABLECONTROLLER.M(我所做的只是添加这两种方法)

-(void)ArchiveData:(id)sender
{
[self.MyHomeworkArray addObject:self.homeworkInTable];


NSString *filePath = [self dataFilePath];//file created
//Archive my object
[NSKeyedArchiver archiveRootObject:self.MyHomeworkArray toFile:filePath];
}


-(NSMutableArray *)UnarchiveData
{
Homework *archivedHomework = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
                                //Error:use of undeclared identifier:filePath^^

}

我是新手,所以我知道有很多错误。我“认为”我正在通过委派正确地从 AssignmentViewController 传递信息。但我很确定我根本没有正确归档/取消归档。我不确定如何将归档/取消归档代码分开,然后显示在表格中。

4

1 回答 1

0

有几个想法可以提供帮助。

1) 将协议放入其自己的文件中,并根据需要将其导入相关的 .h 或 .m 文件中,这样您的所有警告就会消失。

2)当你有一个新的分配时,将它发送到表格视图控制器。

3) 表视图控制器应该: a) 将其插入或附加到可变数组中。该数组是表本身使用的数据。b)然后你可以告诉tableView“insertRows ...”来显示它,或者只使用“reloadData”。c) 完成后,现在您可以存档数据了。

于 2013-10-22T00:46:48.347 回答