尝试将文本字段文本设置为字符串时出错

时间:2014-07-04 19:22:10

标签: objective-c error-handling nsstring uitextfield

我正在尝试将文本字段的文本设置为等于已保存的字符串。我把它全局化,因为我需要在另一点访问它。我收到此错误: Undefined symbols for architecture arm64: "_tailNum", referenced from: -[rvc newPlaneClicked:] in rvc.o "_MM", referenced from: -[rvc newPlaneClicked:] in rvc.o ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

是什么导致了这个/如何修复?

extern NSString *tailNum;
extern NSString *MM;

- (void)newPlaneClicked:(id)sender {

    UIAlertView *newPlaneAlert = [[UIAlertView alloc]initWithTitle:@"FlightLog Pro" message:@"Enter tail number and make/model:"delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Save", nil];

    newPlaneAlert.delegate = self;
    [newPlaneAlert setAlertViewStyle:UIAlertViewStyleLoginAndPasswordInput];

    UITextField *enterNewPlaneTail = [newPlaneAlert textFieldAtIndex:0];
    UITextField *enterNewPlaneMM = [newPlaneAlert textFieldAtIndex:1];

    [enterNewPlaneTail setPlaceholder:@"Click to enter a make/model."];
    [enterNewPlaneMM setPlaceholder:@"Click to enter a plane tail number."];

    [newPlaneAlert textFieldAtIndex:0].autocapitalizationType = UITextAutocapitalizationTypeSentences;
    [newPlaneAlert textFieldAtIndex:0].autocorrectionType = YES;

    [newPlaneAlert textFieldAtIndex:1].autocapitalizationType = UITextAutocapitalizationTypeSentences;
    [newPlaneAlert textFieldAtIndex:1].autocorrectionType = YES;
    [newPlaneAlert textFieldAtIndex:1].secureTextEntry = NO;

    [newPlaneAlert show];

    enterNewPlaneTail.text = tailNum;
    enterNewPlaneMM.text = MM;
}

1 个答案:

答案 0 :(得分:0)

发出这些声明

extern NSString *tailNum;
extern NSString *MM;

进入.h文件,并在.m文件的全局范围内为其分配一些值:

NSString *tailNum = @"tailNum";
NSString *MM      = @"MM";

还阅读有关外部变量的更多信息。你可以从Wikipedia开始。 Here还有一个解释