我有一个需要从数据库访问客户的应用。我已经获得了一系列数据,但我需要在我的应用中的几个视图中分享它。
我创建了这个名为Customers的类,但我不确定如何调用和设置/获取我的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
答案 0 :(得分: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:...];
答案 1 :(得分:0)
似乎您正在使用类对象作为单例,以授予对文件私有变量的访问权。
您可以继续将(类)方法添加到:
e.g。
+ (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)
}