gpt4 book ai didi

iphone - NSMutableDictionary 从不同的类访问

转载 作者:行者123 更新时间:2023-12-03 20:21:38 27 4
gpt4 key购买 nike

在我的 iPhone 应用程序中,我使用整数来跟踪大量变量。我在我的 AppDelegate 文件(它是一个多 View 应用程序)中声明并初始化了它们,然后如果我在其他 View (类)中声明它们,那么这些值将保持不变。通过这种方式,我可以在 App Delegate 文件中设置 Money = 200,然后在另一个 View 中声明“int Money;”并且它已经被设置为 200(或者无论 Money 是什么)。

但是,如果我将所有这些变量存储在字典中(我现在正在这样做),我如何从不同的类/ View 访问该字典?我不能简单地再次“声明”它,我已经尝试过了。我认为这与字典是一个对象有关,因此需要引用它或其他东西。

我需要能够从所有不同的 View 访问相同的字典。

#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 文件中初始化和设置字典一次,然后从其他类访问该字典以更改其中的内容。有办法做到这一点吗?

最佳答案

将 NSMutableDictionary 实例设为静态并编写一个类方法来访问它。将其放入您的 SheepAppDelegate.m 中:

static NSMutableDictionary *theHeart;
+ (NSMutableDictionary*)theHeart
{
if (theHeart == nil) theHeart = [[NSMutableDictionary alloc] init];

return theHeart;
}

并通过使用以下方式在其他任何地方访问它:

NSMutableDictionary *dict = [SheepAppDelegate theHeart];

关于iphone - NSMutableDictionary 从不同的类访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1717790/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com