0

我有一个 Save 方法,它应该保存在视图控制器的文本字段中输入的信息。该方法将此信息正确保存在类变量中,但我想将对象保存在数组中。当我尝试这样做时,我收到一个错误:

使用未声明的标识符“homeworkAssignment”;你的意思是“_homeworkAssignment”吗?

这是保存方法

- (IBAction)Save:(UIButton *)sender {
self.homeworkAssignment = [[Homework alloc] init];
self.homeworkAssignment.className = self.ClassNameField.text;
self.homeworkAssignment.assignmentTitle = self.AssignmentTitleField.text;
self.homeworkAssignment.assignmentDiscription = self.DiscriptionTextView.text;
self.homeworkAssignment.pickerDate = self.DatePicker.date;

NSArray *MyHomeworkArray = [[NSArray alloc]initWithObjects:homeworkAssignment, nil];
                                                           //Error here ^
}

谁能告诉我为什么我能够设置 homeworkAssignment 对象变量但在尝试将对象存储在数组中时出错?

4

2 回答 2

2

你必须使用self.homeworkAssignment. 那是您已经定义并在该方法的每一行中使用的属性。

于 2013-10-09T20:49:19.810 回答
2

您之前的引用homeworkAssignment是通过该homeworkAssignment属性。例如:

self.homeworkAssignment等于[self homeworkAssignment] self.homeworkAssignment = something等于[self setHomeworkAssignment:something]

由于您的属性是自动合成的,因此支持的 ivar 具有前导下划线,例如_homeworkAssignment

大多数时候,您希望使用属性来访问 ivar,即使用self.homeworkAssignment[self homeworkAssignment]。值得注意的例外是在您的 init 和 dealloc 方法中,您希望避免调用方法的任何副作用。

于 2013-10-09T20:52:18.967 回答