如何将UITextField文本保存到NSString?

时间:2013-09-29 00:31:35

标签: ios objective-c uitextfield

在我的主视图控制器中,我有一个UITextField,我正在尝试将文本输入保存到我的Homework模型(类)中的NSString。

Homework.h

#import <Foundation/Foundation.h>

@interface Homework : NSObject

@property (nonatomic, strong) NSString *className;
@property (nonatomic, strong) NSString *assignmentTitle;


@end

Homework.m

#import "Homework.h"

@implementation Homework

@synthesize className = _className;
@synthesize assignmentTitle = _assignmentTitle;

@end

在我的assignmentViewController中,我创建了一个Homework类型的对象,并尝试将其设置为等于按下Save按钮时输入到UITextField中的内容。

分配视图控制器

#import <UIKit/UIKit.h>
#import "Homework.h"

@interface Assignment : UIViewController {


}

@property(nonatomic) IBOutlet UITextField *ClassNameField;
@property(nonatomic) IBOutlet UILabel *ClassNameLabel;
@property (weak, nonatomic) IBOutlet UIButton *SaveButton;

@property (nonatomic, strong) Homework *homeworkAssignment;


- (IBAction)Save:(UIButton *)sender;

@end

AssignmentViewController.m

- (IBAction)Save:(UIButton *)sender {

self.homeworkAssignment.className = self.ClassNameField.text;
NSLog(@"SaveButtonPressed %@", self.homeworkAssignment.className);

}

NSLog打印出className为(null)。任何人都可以帮我弄清楚我做错了什么?这是我的第一个iOS应用程序(除了Hello World)。

编辑:这是使用ARC

编辑:我尝试过更改
    self.homeworkAssignment.className = self.ClassNameField.text;至     self.homeworkAssignment.className = @“TEST”; 并且日志仍显示(Null)。

2 个答案:

答案 0 :(得分:0)

仔细检查您是否已正确关联ClassNameField outlet ,并且您正在初始化homeworkAssignment。像.-

之类的东西
self.homeworkAssignment = [[Homework alloc] init];

顺便说一句,你应该考虑使用 camelCase 表示法来表示你的变量名:)

答案 1 :(得分:0)

说实话,第一步总是很难,但你应该以正确的方式学习,éhé

首先以这种方式合成:

@synthesize labelAssignmentTitle,labelClassName;

@synthesize labelAssignmentTitle;
@synthesize labelClassName;

没有需要执行以下操作:

@synthesize className = _className;
@synthesize assignmentTitle = _assignmentTitle;

现在,如果您从一开始就以正确的方式初始化,那么以后会发现它更容易!

<强> HomeWork.h

@interface HomeWork : NSObject
@property (nonatomic, strong) NSString *className;
@property (nonatomic, strong) NSString *assignmentTitle;

-(id)initWithClassName:(NSString *)newClassName andAssignmentTitle:(NSString*)newAssigmentTitle;

<强> HomeWork.m

@implementation HomeWork
@synthesize assignmentTitle,className;

-(id)initWithClassName:(NSString *)newClassName andAssignmentTitle:(NSString*)newAssigmentTitle {
    self = [super init];
    if(self){
        assignmentTitle = newAssigmentTitle;
        className = newClass;

    }
    return self;
}
@end

ViewController.m

- (IBAction)saveIt:(id)sender {
    HomeWork *newHomeWork = [[HomeWork alloc]initWithClassName:[labelClassName text]andAssignmentTitle:[labelAssignmentTitle text]];
}

因此,您直接使用两个UITextFields给出的参数创建一个newHomeWork对象。

现在在logmessage中打印出来,看看发生了什么;)