1

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

家庭作业.h

#import <Foundation/Foundation.h>

@interface Homework : NSObject

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


@end

家庭作业.m

#import "Homework.h"

@implementation Homework

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

@end

在我的 assignmentViewController 中,我创建了一个 Homework 类型的对象,并尝试将其设置为等于按下保存按钮时输入到 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

分配视图控制器.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; to self.homeworkAssignment.className = @"TEST"; 并且日志仍然显示(Null)。

4

2 回答 2

0

仔细检查您正确链接的ClassNameField 插座以及您正在初始化homeworkAssignment. 就像是。-

self.homeworkAssignment = [[Homework alloc] init];

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

于 2013-09-29T00:37:58.513 回答
0

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

首先这样合成:

@synthesize labelAssignmentTitle,labelClassName;

或者

@synthesize labelAssignmentTitle;
@synthesize labelClassName;

无需执行以下操作:

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

现在,如果您从一开始就以正确的方式进行初始化,您会发现以后会容易得多!

家庭作业.h

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

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

家庭工作.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

视图控制器.m

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

因此,您可以使用两个 UITextField 给定的参数直接创建一个 newHomeWork 对象。

现在在您的日志消息中打印出来,看看发生了什么;)

于 2013-09-29T00:58:50.767 回答