我知道如何将数据从一个视图控制器传递到另一个视图控制器,现在我想知道如何将视图控制器中的文本字段值传递给NSObject类以及如何将收到的文件存储在nstring中。请帮我做这个,任何人都可以举一个例子,
答案 0 :(得分:1)
我认为您要问的是如何将数据存储在模型对象中以供视图控制器使用。如果这不是你的意思,请原谅我。
你是对的,模型对象应该从NSObject
继承。或者,您还可以扩展另一个模型对象以添加属性值。模型对象是将视图对象与数据分离的好方法。
假设您有CustomerViewController
个客户字段。您需要填充这些客户字段,并可能对该数据执行一些处理。模型对象支持这些关系,允许您将视图与任何与数据和业务规则相关的处理逻辑分开。
使用以下关系作为指南,您应该开始构建有效的视图控制器,将视图与数据分开!
CustomModel界面
@interface CustomerModel : NSObject
@property (strong, nonatomic) NSString *firstName, *lastName;
@property (strong, nonatomic) NSString *phoneNumber;
- (BOOL) isValidPhoneNumber:(NSString *)phoneNumber;
@end
CustomerModel实施
#import "CustomerModel.h"
@implementation CustomerModel
- (BOOL) isValidPhoneNumber:(NSString *)phoneNumber
{
//Check that phone number can be parsed and is valid
}
@end
CustomerViewController实施
#import "CustomerViewController.h"
#import "CustomerModel.h"
@interface CustomerViewController () <UITextFieldDelegate>
@property (strong, nonatomic) CustomerModel *customerModel;
...
@property (weak, nonatomic) IBOutlet UITextField *firstNameField
...
@end
@implementation CustomerViewController
- (void) viewDidLoad {
//Optionally instantiate the customer model with stored data,
// to pre-populate the view controller.
self.customerModel = [CustomerModel new];
self.firstNameField.delegate = self;
}
- (void) textFieldDidEndEditing:(UITextField *)textField {
//Validate the phone number
NSString *phoneNumber = textField.text;
if ([self.customerModel isValidPhoneNumber:phoneNumber]) {
self.customerModel.phoneNumber = phoneNumber;
} else {
//Alert the user that the data is invalid
}
}
- (BOOL) textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
@end
可能的改进