在我的主视图控制器中,我有一个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)。
答案 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中打印出来,看看发生了什么;)