私のiPhoneアプリでは、整数を使用して多くの変数を追跡していました。AppDelegateファイル(マルチビューアプリ)ですべてを宣言して初期化し、他のビュー(クラス)で宣言しても値は同じままになります。このようにして、AppDelegateファイルでMoney= 200を設定し、別のビューで「intMoney;」と宣言することができます。そしてそれはすでに200に設定されているでしょう(またはMoneyがたまたまあったとしても)。
ただし、これらすべての変数をディクショナリ(現在実行している)に格納している場合、さまざまなクラス/ビューからそのディクショナリにアクセスするにはどうすればよいですか?もう一度簡単に「宣言」することはできません。すでに試しました。辞書がオブジェクトであることに関係していると思うので、参照する必要があります。
すべての異なるビューから同じ辞書にアクセスできる必要があります。
#import "SheepAppDelegate.h"
@implementation SheepAppDelegate
@synthesize window;
@synthesize rootController;
//Initialize the Dictionary to store all of our variables
NSMutableDictionary *theHeart;
- (void)applicationDidFinishLaunching:(UIApplication *)application {
//Set the values for the Variables and Constants, these are
//accessed from the different classes.
NSMutableDictionary *theHeart = [[NSMutableDictionary alloc] init];
[theHeart setObject:[NSNumber numberWithInt:200] forKey:@"Money"];
[theHeart setObject:@"Number two!" forKey:@"2"];
[window addSubview:rootController.view];
[window makeKeyAndVisible];
}
辞書を初期化し、それに何かを追加することは問題なく機能しますが、別のクラスで行われます。
#import "OverviewController.h"
@implementation OverviewController
@synthesize lblMoney;
@synthesize lblSheep;
@synthesize lblWool;
@synthesize lblFatness;
@synthesize lblCapacity;
@synthesize lblShepherds;
int varMoney;
NSMutableDictionary *theHeart;
- (void)viewWillAppear:(BOOL)animated {
varMoney = [[theHeart objectForKey:@"Money"] intValue];
}
このクラスの辞書をもう一度初期化しようとしていることがわかりますが、それは明らかに機能していません。AppDelegateファイルでディクショナリを一度初期化してセットアップしてから、他のクラスからそのディクショナリにアクセスして、その中の内容を変更したいと思います。これを行う方法はありますか?