使用单例传递字符串



我对iOS编程相当陌生,并且试图使用if单例将用户输入字符串从文本字段传递到另一个视图。我的应用的目的是让用户键入车辆名称或型号,然后显示 Craigslist 搜索它。

在查看了一些 youtube 指南后,似乎我的代码应该可以工作,但字符串没有被传递,它只显示为 (null)。谁能说出出了什么问题?

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

全局变量.h

@interface GlobalVariables : NSObject{
    NSString *globalStr;
}
@property(nonatomic, strong) NSString *globalStr;
+(GlobalVariables *) singleObj;
@end

全局变量.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;
}

获取全局 Str 的代码

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

在您的 -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;
}

相关内容

  • 没有找到相关文章

最新更新