Iphone NSString变量在整个程序中可用

Iphone NSString变量在整个程序中可用,iphone,objective-c,ios,nsstring,Iphone,Objective C,Ios,Nsstring,我有一行代码: NSString *dateString = [self.dates objectAtIndex:row]; 当用户在选择器中选择一行时设置。我希望这个代码在任何地方都可用,而不仅仅是在选择器选择区域。当然,我得到的另一个“dateString”是未声明的错误消息 我该怎么做呢 感谢您的帮助。一个简单但不是很优雅的解决方案是使用NSUserDefaults NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]

我有一行代码:

NSString *dateString = [self.dates objectAtIndex:row];
当用户在选择器中选择一行时设置。我希望这个代码在任何地方都可用,而不仅仅是在选择器选择区域。当然,我得到的另一个“dateString”是未声明的错误消息

我该怎么做呢


感谢您的帮助。

一个简单但不是很优雅的解决方案是使用NSUserDefaults

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

// saving an NSString
[prefs setObject:@"TextToSave" forKey:@"keyToLookupString"];
[prefs synchronize];

// getting an NSString
NSString *myString = [prefs stringForKey:@"keyToLookupString"];

一个简单但不是很优雅的解决方案是使用NSUserDefaults

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

// saving an NSString
[prefs setObject:@"TextToSave" forKey:@"keyToLookupString"];
[prefs synchronize];

// getting an NSString
NSString *myString = [prefs stringForKey:@"keyToLookupString"];

在接口文件(.h)文件中定义为全局变量。如果要在其他类中使用,请创建属性并将其合成。

在接口文件(.h)文件中定义为全局变量。如果您想在其他类中使用,请生成属性并合成它。

使用此代码。您可以保存整个字符串。 只需创建的NSString对象

在(YourDelegare.h)文件中

NSString*日期字符串

在(YourDelegare.m)文件中


只要在需要的地方调用这些方法。

使用此代码。您可以保存整个字符串。 只需创建的NSString对象

在(YourDelegare.h)文件中

NSString*日期字符串

在(YourDelegare.m)文件中


只要在需要的地方调用这些方法。

或者您可以在委托文件中声明该变量

yourregate.h
中:

NSString *yourString;

@property (nonatomic, retain) NSString *yourString;
yourdelegate *appDelegate;
yourdelegate.m
中:

@synthesize yourString;
appDelegate = [[UIApplication sharedApplication] delegate];  // in viewDidLoad
appDelegate.yourString = [self.dates objectAtIndex:row];  // where ever you need
viewcontroller.h
中:

NSString *yourString;

@property (nonatomic, retain) NSString *yourString;
yourdelegate *appDelegate;
viewcontroller.m
中:

@synthesize yourString;
appDelegate = [[UIApplication sharedApplication] delegate];  // in viewDidLoad
appDelegate.yourString = [self.dates objectAtIndex:row];  // where ever you need

而且,像magic一样,它现在是一个全局变量。

或者您可以在代理文件中声明该变量

yourregate.h
中:

NSString *yourString;

@property (nonatomic, retain) NSString *yourString;
yourdelegate *appDelegate;
yourdelegate.m
中:

@synthesize yourString;
appDelegate = [[UIApplication sharedApplication] delegate];  // in viewDidLoad
appDelegate.yourString = [self.dates objectAtIndex:row];  // where ever you need
viewcontroller.h
中:

NSString *yourString;

@property (nonatomic, retain) NSString *yourString;
yourdelegate *appDelegate;
viewcontroller.m
中:

@synthesize yourString;
appDelegate = [[UIApplication sharedApplication] delegate];  // in viewDidLoad
appDelegate.yourString = [self.dates objectAtIndex:row];  // where ever you need

而且,就像魔术一样,它现在是一个全局变量。

为什么不使用单例设计模式呢?在我看来,这似乎是一个比上面发布的解决方案更干净的解决方案。

VariableStore.m

可变存储

要使用变量的任何类。m
为什么不使用单例设计模式?在我看来,这似乎是一个比上面发布的解决方案更干净的解决方案。

VariableStore.m

可变存储

要使用变量的任何类。m