1

我有一个需要从数据库访问客户的应用程序。我有数据数组,但我需要在我的应用程序中的几个视图中共享它。

我创建了这个名为“客户”的类,但我不确定如何调用和设置/获取我NSMutableArray的客户。

有没有一个很好的例子或者有人可以给我看的代码片段?

#import "Customers.h"

@implementation Customers

 static NSMutableArray *customers; 
 // I need to set/access the customers array class from all views.

 + (NSMutableArray *)allCustomers 
 {
  if !(customers) 
  {
   customers = [NSMutableArray array];
  }
  return customers;
 }
 @end
4

2 回答 2

1

我建议您阅读有关单例模式的信息。使用单例模式,您可以确保一个类被初始化一次并持久化。这样,您可以轻松地从任何地方访问该类,并以这种方式从任何类获取和设置其数组。

obj-c 中的单例:http ://www.galloway.me.uk/tutorials/singleton-classes/

它看起来像这样:

界面:

@property (nonatomic, strong) NSMutableArray *customers;

+ (Customers *)sharedCustomers;

执行:

+ (Customers *)sharedCustomers
{
    static Customers *sharedCustomers;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        sharedCustomers= [[Customers alloc] init];
    });
    return sharedCustomers;
}

然后从任何地方,通过导入“Customers.h”,您可以获取和设置数组。

得到:

[[Customers sharedCustomers] customers];

环境:

[[Customers sharedCustomers] setCustomers:...];
于 2013-06-06T18:02:10.683 回答
0

似乎您将类对象用作单例,以授予对文件私有变量的访问权限。

您可以继续将(类)方法添加到:

  1. 从文件/网络或任何地方读取数据库
  2. 搜索数组

例如

+ (id) customerAtIndex:(NSUInteger) index
{
    return [customers objectAtIndex:index];
    // (perhaps you can add a bounds check)
}

+ (void) insertCustomer:(id) customer atIndex:(NSUInteger) index
{
    [customers insertObject:customer atIndex:index];
    // (perhaps you can add a bounds check)
}
于 2013-06-06T01:58:19.477 回答