替代使用Singleton或AppDelegate进行全局数据存储

时间:2015-01-27 21:16:58

标签: ios objective-c singleton solid-principles

我有一个应用需要访问一组无法存储在磁盘上的用户数据。我过去的典型方法是创建一个单例来保存这些数据,并为每个属性提供并发队列,以使数据读/写线程安全。

我想知道的是,如果有一种方法可以在不使用Singletons或在AppDelegate中存储对我的用户数据的引用的情况下执行此操作。

1 个答案:

答案 0 :(得分:-1)

NSUserDefaults听起来像你正在寻找的。根据{{​​3}}“NSUserDefaults类提供了一个用于与默认系统交互的编程接口。默认系统允许应用程序自定义其行为以匹配用户的首选项。”您可以以全局方式使用NSUserDefaults。

为此,您需要先创建一个NSUserDefaults对象:

NSUserDefaults *myAppDefaults = [NSUserDefaults myAppDefaults];

要将数据保存到默认系统,您可以执行与以下行类似的操作:

[standardDefaults setObject:@"Smith" forKey:@"lastName"];

最后,您可以通过将数据存储在变量中来从默认系统中检索数据。下面的行显示了如何将NSString设置为您最初存储的值:

NSString *lastName = [standardDefaults stringForKey:@"lastName"];