我有这行代码:
NSString *dateString = [self.dates objectAtIndex:row];
当用户选择选择器中的行时,会被设置。我想让这些代码随处可用,而不仅仅是在选择器选择区域。其他明智的我得到了一个" dateString"当然是未声明的错误信息。
我将如何做到这一点?
感谢您的帮助。
答案 0 :(得分:3)
为什么不使用单身设计模式?对我来说,上面提出的解决方案似乎是一个更清洁的解决方案
#import "VariableStore.h"
@implementation VariableStore
@synthesize dateString;
+ (VariableStore *)sharedInstance
{
static VariableStore *myInstance = nil;
if (nil == myInstance)
myInstance = [[[self class] alloc] init];
return myInstance;
}
@end
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface VariableStore : NSObject
{
NSString *dateString;
}
+ (VariableStore *)sharedInstance;
@property (nonatomic, retain) NSString *dateString;
@end
#import "VariableStore.h"
NSLog("dateString = %@", [VariableStore sharedInstance].dateString);
答案 1 :(得分:0)
一个简单但不太优雅的解决方案是使用NSUserDefaults。
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
// saving an NSString
[prefs setObject:@"TextToSave" forKey:@"keyToLookupString"];
[prefs synchronize];
// getting an NSString
NSString *myString = [prefs stringForKey:@"keyToLookupString"];
答案 2 :(得分:0)
在接口文件(.h)文件中定义为全局变量。如果你想在其他类中使用,也可以使用属性并合成它。
答案 3 :(得分:0)
使用此代码。您可以保存整个字符串。 只需创建
的NSString对象 (NSString * dateString;
( -(void) saveMyState
{
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setObject:dateString forKey:@"dateString"];
[prefs synchronize];
}
- (void) retrieveMyState
{
//Retrieving
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
dateString = [prefs stringForKey:@"dateString"];
}
只要在需要的地方调用这些方法。
答案 4 :(得分:0)
或者您可以在委托文件中声明该变量。
在yourdelegate.h
:
NSString *yourString;
@property (nonatomic, retain) NSString *yourString;
在yourdelegate.m
:
@synthesize yourString;
在viewcontrolller.h
:
yourdelegate *appDelegate;
在viewcontrolller.m
:
appDelegate = [[UIApplication sharedApplication] delegate]; // in viewDidLoad
appDelegate.yourString = [self.dates objectAtIndex:row]; // where ever you need
而且,就像魔法一样,它现在是一个全局变量。