我正在开发一个ios应用程序,在第一个视图控制器中,要求用户提供其性别年龄和母语的名称。然后我将在整个应用程序中使用这些对象。那么存储对象的最佳方法是什么,以便从所有类中轻松访问它们?
答案 0 :(得分:3)
使用NSUserDefaults
。使用起来非常简单,可以从应用程序的任何地方访问。
您应该使用它来存储用户首选项。它可以存储简单的数据类型以及复杂的对象甚至数组,字典。存储任何密钥都很简单,
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:firstName forKey:@"firstName"];
读回来,
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *firstName = [defaults objectForKey:@"firstName"];
注意:用户默认值存储在plist文件中,每次应用程序启动时都会加载。所以要小心不要写太多信息。否则,应用程序加载时间会增加,如果超出监视程序计时器间隔,应用程序将收到SIGKILL
并崩溃。
但在您的情况下,为了存储用户设置,您可以继续使用它。
希望有所帮助!
答案 1 :(得分:3)
创建单例类说MySingletonClass并定义您的变量。 你可以通过singleton对象从任何类访问你的变量。
// MySingleton.h
@interface MySingletonClass : NSObject
{
//your global variable here
}
// set property for your variable
+ (MySingletonClass*)sharedInstance; // method for getting object of this singleton class
// In MySingleton.m
//synthesize property for your global variable
+ (MySingletonClass*)sharedInstance
{
if ( !sharedInstance)
{
sharedInstance = [[UIController alloc] init];
}
return sharedInstance;
}
现在在其他课程中,您可以访问此变量。 按照此代码访问MySingletonClass中的变量define
MySingletonClass* sharedInstance = [MySingletonClass sharedInstance]; // get object of MySingletonClass
sharedInstance.yourVariable; // now you can access variable defined in MySingletonClass by this object.
您还可以在AppDelegate中定义全局变量(不推荐)。
答案 2 :(得分:2)
您可以使用Singleton
。这样的类只能有一个对象,您可以从应用程序的任何位置访问它。
看看这个问题:Singleton
您只需更改isMultiplayer
属性即可满足您的需求。
答案 3 :(得分:1)
创建一个代表:
的类...命名性别年龄和母语
当您从用户获取信息时,创建该类的实例(例如,不可变实例),并将其从视图控制器传递到依赖于它的其他实现。在某些情况下,您需要创建ivars或属性来保留此实例。
不需要全局。
答案 4 :(得分:0)
你可以在appDelegate类中使extern任何变量在项目的任何地方使用它。
extern NSString * passString;
答案 5 :(得分:0)
是的,我希望使用NSUserDefaults是上面提到的应用程序的最佳和最简单的方式。它非常简单,易于从应用程序中的任何视图控制器访问数据,没有任何更高的难度。