关于Objective C:从代码中的实体获取值列表

Getting list of values from an entity in code

我有一个名为clients的entity和一个名为clientsController的NSArrayController。在我的客户实体中,我有一个名为clientCompany。

的属性。

在运行循环时以编程方式获取每个clientCompany的列表最直接的方法是什么(以便可以从每个发现的clientCompany继续执行代码)?在这种情况下,我不确定是否应该访问阵列控制器或托管对象。

我已经尝试过:

1
2
3
for (NSDictionary *key in clientsController) {
    NSLog(@"%@", [key objectForKey:@"clientCompany"]);
}

没有运气,但我认为我还没有做到。我也出于好奇而尝试打印数组的rangedobjects,但是它打印为空:

1
NSLog(@"%@", [clientsController arrangedObjects]);

clientsController已被初始化并可以在程序的其他位置访问,所以我认为这很简单,但是我对这一切还是很陌生的。谢谢。

更新

我在NSManagedObjectContext路线上尝试NSFetchRequest取得了一些成功。请求ObjectAtIndex:0现在,我可以将第一个clientCompany字符串打印到控制台。我只需要能够将所有这些循环拉出,但最困难的部分已经完成(我希望如此)。


这对我有用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSManagedObjectContext *clientsMoc= [clientsController managedObjectContext];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Clients" inManagedObjectContext:clientsMoc];
[fetchRequest setEntity:entity];
NSError *error = nil;
NSArray *items = [clientsMoc executeFetchRequest:fetchRequest error:&error];
[fetchRequest release];
NSInteger *counter;
counter = 0;
for (NSString *s in items) {
    NSManagedObject *mo = [items objectAtIndex:counter];  // assuming that array is not empty
    id value = [mo valueForKey:@"clientCompany"];
    NSLog(@"a value is %@", value);
    counter = counter + 1;
}