我有一个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对象变量但在尝试将对象存储在数组中时会出错吗?
答案 0 :(得分:2)
您必须使用self.homeworkAssignment
。这是您已定义的属性,并已在该方法的其他每一行中使用。
答案 1 :(得分:2)
您先前对homeworkAssignment
的引用是通过homeworkAssignment
属性进行的。例如:
self.homeworkAssignment
等于[self homeworkAssignment]
self.homeworkAssignment = something
等于[self setHomeworkAssignment:something]
由于您的属性是自动合成的,因此支持的ivar具有前导下划线,例如_homeworkAssignment
大多数情况下,您希望使用该属性来访问ivar,即使用self.homeworkAssignment
或[self homeworkAssignment]
。值得注意的例外是你的init和dealloc方法,你想避免调用方法的任何副作用。