整个程序都可以使用NSString变量

时间:2011-08-02 10:55:48

标签: iphone objective-c ios nsstring

我有这行代码:

NSString *dateString = [self.dates objectAtIndex:row];
当用户选择选择器中的行时,

会被设置。我想让这些代码随处可用,而不仅仅是在选择器选择区域。其他明智的我得到了一个" dateString"当然是未声明的错误信息。

我将如何做到这一点?

感谢您的帮助。

5 个答案:

答案 0 :(得分:3)

为什么不使用单身设计模式?对我来说,上面提出的解决方案似乎是一个更清洁的解决方案

VariableStore.m

#import "VariableStore.h"

@implementation VariableStore

@synthesize dateString;

+ (VariableStore *)sharedInstance
{
    static VariableStore *myInstance = nil;

    if (nil == myInstance)
        myInstance  = [[[self class] alloc] init];

    return myInstance;
}
@end


VariableStore.h

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

@interface VariableStore : NSObject
{
    NSString *dateString;
}

+ (VariableStore *)sharedInstance;

@property (nonatomic, retain) NSString *dateString;

@end


AnyClassWhereYouWantToUseYourVariable.h

#import "VariableStore.h"


AnyClassWhereYouWantToUseYourVariable.m

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

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