用单例传递字符串

时间:2013-10-06 00:23:06

标签: ios objective-c cocoa-touch singleton global-variables

我对iOS编程很新,并尝试将用户输入字符串从文本字段传递到另一个视图,并使用if singletons。我的应用程序的目的是让用户输入车辆名称或型号,然后显示Craigslist搜索它。

在查看了一些youtube指南后,似乎我的代码应该正常工作,但字符串没有被传递,它只显示为(null)。任何人都可以说出错了吗?

这些是我的单例文件和与设置和获取字符串相关的代码,我对GlobalVariables.h的所有文件都有import语句:

GlobalVariables.h

@interface GlobalVariables : NSObject{

    NSString *globalStr;

}

@property(nonatomic, strong) NSString *globalStr;

+(GlobalVariables *) singleObj;

@end

GlobalVariables.m

@implementation GlobalVariables

@synthesize globalStr;


static GlobalVariables *singleObj = nil;

+ (GlobalVariables *) singleObj{
    @synchronized(self){
        if (singleObj==nil){
            singleObj = [[self alloc]init];
        }
    }
    return singleObj;
}

@end

设置globalStr的代​​码:* nameTextField是用户输入字段

-(IBAction)searchButtonPressed:(id)sender
{
    textToPass = nameTextField.text;
    [self passValues];
}

- (void) passValues{
    GlobalVariables *myVar = [GlobalVariables singleObj];
    myVar.globalStr = textToPass;

}

获取globalStr的代​​码

GlobalVariables* myVar = [GlobalVariables singleObj];
NSString *searchStr = myVar.globalStr;

1 个答案:

答案 0 :(得分:0)

在你的-passValues方法中,你能改变它并检查textToPass是不是nil? textToPass是属性吗?

- (void) passValues{

    NSLog(@"textToPass: %@", textToPass);

    GlobalVariables *myVar = [GlobalVariables singleObj];
    myVar.globalStr = textToPass;

}

您的代码可能需要看起来像这样:

-(IBAction)searchButtonPressed:(id)sender
{
    textToPass = nameTextField.text;
    [self passValues:textToPass];
}

- (void)passValues:(NSString *)text
{
    GlobalVariables *myVar = [GlobalVariables singleObj];
    myVar.globalStr = text;

}