2016-05-22 2 views
-1

Я знаю, как передавать данные с одного контроллера вида на другой контроллер представления, теперь я хочу знать, как передать значение поля из контроллера точки зрения в класс NSObject и как сохранить полученные данные в nstring. Пожалуйста, помогите мне сделать это. Может ли кто-нибудь привести пример,Передача данных из вида Контроллер в класс NSObject

+0

(Предполагаю, вы имеете в виду подкласс под NSObject.) Как выглядит класс и как объект класса связан с контроллером? –

+0

@Phillip Mills ya его подкласс NSObject, в контроллере просмотра есть текстовое поле, которое я просто передаю в nsobject, а затем я хочу выполнить какой-то процесс там, – user6183984

+1

Я не понимаю, что вас путает. Создайте свойство 'NSString' в .h-файле для подкласса и установите свойство из контроллера вида. Контроллер явно нуждается в ссылке на объект, но как это сделать, зависит от ответа на мой вопрос: «* как объект класса, связанный с контроллером *». –

ответ

0

Я думаю, что вы спрашиваете, как хранить данные в объекте модели для использования вашим контроллером. Если это не значит, значит, простите меня.

Вы правы, что объект модели должен наследовать от 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 

Возможные улучшения

  • Это может быть немного раздражает Пользователя, чтобы увидеть предупреждения при заполнении информации. Таким образом, было бы лучше отложить проверку до нажатия кнопки сохранения.
  • Объекты модели могут быть заполнены из хранилища данных, которые будут использоваться для предварительного заполнения формы.