Переменная NSString доступна по всей программе - PullRequest
0 голосов
/ 02 августа 2011

У меня есть эта строка кода:

NSString *dateString = [self.dates objectAtIndex:row];

, которое устанавливается, когда пользователь выбирает строку в средстве выбора. Я хотел бы, чтобы этот код был доступен везде, а не только в области выбора. В противном случае, я получаю "dateString" - необъявленное сообщение об ошибке, конечно.

как бы я поступил так?

спасибо за любую помощь.

Ответы [ 5 ]

3 голосов
/ 02 августа 2011

Почему бы вам не использовать шаблон проектирования Singleton?Мне кажется, это более чистое решение, чем решения, опубликованные выше.

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);
0 голосов
/ 02 августа 2011

Или вы можете объявить эту переменную в вашем файле делегата.

В yourdelegate.h:

NSString *yourString;

@property (nonatomic, retain) NSString *yourString;

В yourdelegate.m:

@synthesize yourString;

В viewcontrolller.h:

yourdelegate *appDelegate;

In viewcontrolller.m:

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

И, подобно магии, теперь это глобальная переменная.

0 голосов
/ 02 августа 2011

Определить как глобальную переменную в файле вашего файла интерфейса (.h).Если вы хотите использовать в другом классе, также создайте свойство и синтезируйте его.

0 голосов
/ 02 августа 2011

Используйте этот код.Вы можете сохранить всю строку.Просто создайте объект NSString из

в файле (YourDelegare.h)

NSString * dateString;

в файле (YourDelegare.m)

  -(void) saveMyState 
 {
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

[prefs setObject:dateString forKey:@"dateString"];  

[prefs synchronize];
 }


- (void) retrieveMyState
{
//Retrieving

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
dateString = [prefs stringForKey:@"dateString"];


 }

просто вызывайте эти методы везде, где это необходимо.

0 голосов
/ 02 августа 2011

Простое, но не очень элегантное решение - использовать NSUserDefaults.

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

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

// getting an NSString
NSString *myString = [prefs stringForKey:@"keyToLookupString"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...