【问题标题】:Getting list of values from an entity in code从代码中的实体获取值列表
【发布时间】:2011-02-28 14:39:53
【问题描述】:

我有一个名为 clientsentity 和一个名为 clientsControllerNSArrayController。在我的 clients 实体中,我有一个名为 clientCompany 的属性。

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

我试过了:

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

没有运气,但我想我还差得远。出于好奇,我还尝试打印数组的排列对象,但它打印为空:

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

clientsController 已在程序的其他地方进行了初始化和访问,所以我认为这很简单,但我对这一切都很陌生。谢谢。


更新
我在NSManagedObjectContext 路线和尝试NSFetchRequest 方面取得了一点成功。请求 ObjectAtIndex:0 我现在可以将第一个 clientCompany 字符串打印到控制台。我只需要能够将它们全部拉出一个循环,但困难的部分已经完成(我希望)。

【问题讨论】:

  • 我有几个关于您的设置的问题。 clientsController 是否包含客户对象或客户公司对象?另外,您要打印 clientCompany 的哪一部分?
  • 我称为clients 的实体具有各种属性,其中没有一个称为clients,但有一个称为clientCompany。我拥有的NSArrayController 是通过 IB 绑定为客户端提供的对象控制器。因此,默认情况下,clientCompany 是 clientControllers 托管对象的键值。我希望这是有道理的,因为我对我的定义没有信心。

标签: objective-c xcode macos loops nsarraycontroller


【解决方案1】:

这对我有用:

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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多