4

我正在开发一个 ios 应用程序,其中在第一个视图控制器中要求用户提供其名称性别年龄和母语。然后我将在整个应用程序中使用这些对象。那么存储对象以便所有类都可以轻松访问它们的最佳方法是什么?

4

6 回答 6

3

使用NSUserDefaults. 使用起来非常简单,可以从应用程序的任何地方访问。

您应该使用它来存储用户首选项。它可以存储简单的数据类型以及复杂的对象甚至数组、字典。存储任何密钥都非常简单,

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:firstName forKey:@"firstName"];

读回来,

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *firstName = [defaults objectForKey:@"firstName"];

注意:用户默认值存储在 plist 文件中,并在每次应用程序启动时加载。所以请注意不要在其中写入太多信息。否则应用程序加载时间会增加,如果超过看门狗定时器间隔,应用程序将接收SIGKILL并崩溃。

但是在您的情况下,为了存储用户设置,您可以继续使用它。

希望有帮助!

于 2013-08-27T06:53:28.643 回答
3

创建单例类说 MySingletonClass 并定义你的变量。您可以通过单例对象从任何类访问您的变量。

// 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 中的变量定义

MySingletonClass* sharedInstance = [MySingletonClass sharedInstance]; // get object of MySingletonClass
sharedInstance.yourVariable; // now you can access variable defined in MySingletonClass by this object.

您也可以在 AppDelegate 中定义全局变量(不推荐)。

于 2013-08-27T07:35:27.967 回答
2

您可以Singleton为此使用 a 。这样的类只能有一个对象,您可以从应用程序中的任何位置访问它。看看这个问题:Singleton

您只需要更改isMultiplayer属性以满足您的需求。

于 2013-08-27T06:47:43.437 回答
1

创建一个代表:

…说出性别年龄和母语

当你从用户那里得到信息时,创建一个类的实例(例如不可变实例),并将它从视图控制器传递给依赖它的其他实现。在某些情况下,您需要创建 ivars 或属性来保留此实例。

不需要全局。

于 2013-08-27T08:34:48.800 回答
0

您可以让 extern appDelegate 类中的任何变量在项目中的任何位置使用它。

外部 NSString *passString;

于 2013-08-27T07:23:30.137 回答
0

是的,我希望使用 NSUserDefaults 是上面提到的应用程序的最佳和恰当的方式。它非常简单,很容易从应用程序中的任何视图控制器访问数据,没有任何更高的难度。

于 2014-05-23T08:06:37.173 回答