ios - 有没有办法使用全局静态字典可以访问objective-c ios中的所有视图控制器?
问题描述
我正在尝试实现一个能够访问所有类的静态全局字典。除了单例还有其他方法吗?我在堆栈溢出中尝试了很多我无法得到任何解决方案有人帮我解决这个问题。这是我的字典代码。
NSDictionary *colors = @{@"black": [UIColor blackColor], @"pink": [UIColor purpleColor], @"blue": [UIColor blueColor], @"red": [UIColor redColor], @"yellow": [UIColor yellowColor]};
我在我的课堂上使用这样的用户默认值。
NSString *savedValue = [[NSUserDefaults standardUserDefaults]
stringForKey:@"colordatafromthisvc"];
UIColor *color = colors[savedValue] ?: [UIColor orangeColor];
_nxtbtnlet.backgroundColor = color;
解决方案
始终认为最好将单例用于此类目的。
如果您被迫不使用单例,您可以使用:
选项1
在.h文件中:
extern NSDictionary *GlobalDictionary;
在.m文件中:
NSDictionary *GlobalDictionary;
然后,在相应.m文件的初始化函数(或任何其他在应用程序启动后肯定会调用的方法)中,您可以拥有:
GlobalDictionary = @{@"black": [UIColor blackColor], @"pink": [UIColor purpleColor], @"blue": [UIColor blueColor], @"red": [UIColor redColor], @"yellow": [UIColor yellowColor]};
您现在可以从包含其头文件的任何文件中访问GlobalDictionary ,如下所示:
UIColor *color = [GlobalDictionary objectForKey:@"blue"];
选项 2
考虑将UIColor本身保存到UserDefaults。
推荐阅读
- scipy - scipy.optimize 中的约束抛出 x0 错误
- c# - gridview 同一单元格上的多个链接按钮 - 单击事件未触发 - c#
- c++ - CMAKE 检测编译器 ABI 失败
- matlab - 如何在转换数据类型之前重新缩放图像数据
- python - AttributeError:模块'scipy'没有属性'__version__'
- jboss - 部署到 Wildfly 期间出现问题,错误“名称为空”
- android - 是否有适用于 iOS 的 FastOutSlowInInterpolator 等价物?
- android - Vimeo Player 是以字节还是 mb 为单位返回视频大小?
- node.js - 如何使用 node.js 和 web 套接字在终端上显示客户端的数据
- windows - 如何在自托管的 WCF 中获取多部分表单数据?