应用程序的主要用户 - 最佳实现



我正在创建一个应用程序,看起来像Twitter应用程序,uitabbarController uinavigationController。

在我的应用中,我需要拥有一个主要用户(例如 you )和其他用户, you 以及用户共享相同的结构,即类。

在很多普通用户的情况下,我看不到问题 - 您创建用户对象,使用它,弧执行其作业。

我的问题是:什么是保存您的数据,访问或传递在选项卡之间的最佳方法(并且可以以特定顺序选择选项卡)。

我已经阅读了许多有关此主题的Q&,我可以使用:

  1. 全局var;
  2. 类方法( );
  3. singleton;
  4. nsuserDefaults;

但是,我认为我真的不知道正确,最佳答案。

编辑:抱歉,如果我写信不清楚,我会尽力解释更好。启动应用程序时,您需要登录,登录后,您可以与其他用户交谈,为其做任务等。确实有一个用户我想存储数据,因为当我在选项卡之间切换时,我需要知道我的ID和其他信息。但是我与之交谈的其他用户实际上在班级设计方面是相同的。他们都需要有名称,头像,电子邮件等。

您的问题仍然有些模糊,因为目前尚不清楚您是要询问保存数据或将信息从一个视图(TAB)传递给另一个视图。但是我仍然认为我会得到你想做的。

首先,让我澄清您的建议,因为其中一些完全是无关的:

  1. 全局var ;全局变量是一个变量,您可以从代码的任何部分,任何类别,任何方法都可以从任何部分访问。在面向对象的编程中,这是高度灰心的,我认为这是一个不好的做法(除非您知道自己在做什么)
  2. 类方法( );类方法只是一种未引用类的特定实例的方法。
  3. singleton ;单身人士是一个允许自身的一个实例的类。实施它们有几种方法,并且都有相同的原则。类方法(前面提到)通常与单例使用来管理它们。
  4. NSUSERDEFAULTS ;这可能是列表中最无关的。这是一个提供的类,可以持续保存信息。例如,您可以在聊天中存储最近二手表情符号的列表。

设计应用程序的逻辑取决于您。但是,一个例子是用聊天系统对象。

@interface ChatSystem...
{
     User *you;
     NSArray *otherUsers;
}

如果您像这样设计了聊天系统对象,则不需要任何单例,因为同一变量总是引用您。所有其他用户都存储在数组otherUsers中。您可以通过视图(或选项卡)传递chatsytem对象,您将永远知道您是哪一个,因为您将其引用为

myChatSystem.you

正如我之前所说的,您的问题很模糊,但我希望这对您有所帮助。

编辑:如果只有一个登录的用户(您),则可以使用单身人士进行管理。那里有数百个单身人士的例子,因此请抓住其中的任何一个。因此,要访问用户,请使用Singleton实例。在上面的示例中,这将是。

User *you; // Declared locally or in your class definition
you = [User singletonLoggedInUserInstance]; // get the logged In user
if (you)  // if user is valid, meaning there IS a logged in user
{
    //... do something, initiate chat conversation....
}

另一方面,如果您不想使用单例,则只需将用户对象声明为视图,选项卡或控制器的属性,这些属性将与该对象(或用户)一起使用。例如,如果对象A创建用户,并且对象B想要与该用户一起做一些事情,那么您会做类似的事情:

@interface TabA
@property.... User *user;
@property ... TabB *tabB;
@end
- (void)passUserToTabB
{
    self.tabB.user = self.user; //... pass user to Tab B
}

@interface TabB
@property.... User *user;
@end

最新更新