0

我对 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) {

请说如果你想要更多的代码

提前致谢

4

2 回答 2

3

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

尽管您加载数据的问题可能是不分配/初始化数组的简单问题。最好将您的患者阵列移动到您当地的班级。

将此属性从您的委托移动到您的班级。

@property (nonatomic, retain) NSMutableArray *patients;

不要使用复制,不要使用 NSArray。 此外,您需要确保在某处实例化可变数组。最好在 viewDidLoad 函数中。

在您的班级中,在创建此视图控制器之前的某个位置,请确保您创建了数组。

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

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

通常如果数据没有遇到它是 b/c 你的数组是 nil 或 NSArray 而不是 NSMutableArray。

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

于 2013-06-21T18:03:31.407 回答
0

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

于 2013-06-21T19:30:24.203 回答