尝试使用Object初始化NSArray时出错?

时间:2013-10-09 20:47:40

标签: iphone ios objective-c nsarray

我有一个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对象变量但在尝试将对象存储在数组中时会出错吗?

2 个答案:

答案 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方法,你想避免调用方法的任何副作用。