NSMutablearray添加条目?

时间:2013-06-21 17:49:22

标签: iphone ios objective-c nsmutablearray

我对objective-c很新,我正在创建一个记录保存的应用程序。当我点击一个保存按钮时,我试图制作一个添加方法,虽然它按下按钮时没有保存数据,或者它没有显示它。数据显示在tableView

这是保存按钮的代码:

-(void)savePatient:(id)sender {
LSAppDelegate *delegate = (LSAppDelegate *)[[UIApplication sharedApplication] delegate];
NSMutableArray *patients = delegate.patients;

UITextField *firstnameEntry = (UITextField *)[firstNameCell viewWithTag:777];
UITextField *surnameEntry = (UITextField *)[surnameNameCell viewWithTag:777];
UITextField *dobEntry = (UITextField *)[dobDateCell viewWithTag:777];
UITextField *homeNumberEntry = (UITextField *)[homeNumberCell viewWithTag:777];
UITextField *mobileNumberEntry = (UITextField *)[mobileNumberCell viewWithTag:777];
UITextField *emailAddressEntry = (UITextField *)[emailAddressCell viewWithTag:777];
UITextView *addressEntry = (UITextView *)[addressCell viewWithTag:777];

if (firstnameEntry.text.length > 0) {
    Patient *newPatient = [[Patient alloc] init];
    newPatient.patientName = firstnameEntry.text;
    newPatient.patientSurname = surnameEntry.text;
    newPatient.patientDoB = dobEntry.text;
    newPatient.patientHomeNumber = homeNumberEntry.text;
    newPatient.patientMobileNumber = mobileNumberEntry.text;
    newPatient.patientEmail = emailAddressEntry.text;
    newPatient.patientAddress = addressEntry.text;
    newPatient.patientPicture = nil;
    [patients addObject:newPatient];
    LSViewController *viewController = delegate.viewController;
    [viewController.tableView reloadData];
}
    [delegate.navController popViewControllerAnimated:YES];

}

我发现问题就在这里

if (firstnameEntry.text.length > 0) {

如果您想要更多代码,请说明

提前致谢

2 个答案:

答案 0 :(得分:3)

您需要确保您的委托具有正确的保留类型而不是复制,因为该属性中的副本返回数组而不是NSMutableArray。

虽然加载数据的问题可能是一个不分配/启动数组的简单问题。将患者阵列移到当地班级会更好。

将此属性从您的代理移至您的班级。

@property (nonatomic, retain) NSMutableArray *patients;

不要使用副本,也不要使用NSArray。此外,您需要确保在某个地方实例化可变数组。最好在viewDidLoad函数中。

在你的类中,在创建这个viewcontroller之前的某个地方,确保你创建了数组。

self.patients = [[NSMutableArray alloc] init];

这假设您正在使用ARC。如果您不使用ARC,请确保使用dealloc方法释放数组。

通常如果没有数据,那么b / c你的数组是nil或NSArray而不是NSMutableArray。

我还会在上面的方法中添加断点,并确保你的tableView不是nil并且你的数组不是nil。

答案 1 :(得分:0)

您确定[viewController.tableView reloadData];确实得到了吗? 执行,我严重怀疑它,因为你在一个不同的viewController, 您可以尝试将reloatData语句放在表的viewDidAppear事件中 从编辑viewController弹出后的控制器视图。