我整天都在苦苦挣扎。我有一个CD模型,它有一个实体sales_rep,它与另一个名为customers的实体有1对多的关系。
我可以检索并显示存储在这里的sales_rep数据:
SALES_REP_DATA* thisSalesRepData
我可以得到客户数量的计数:
thisSalesRepData.hasCustomers.count
这将返回正确数量的记录(在本例中为37)
但我无法获取客户信息。我没有设置CD,所以实体是CUSTOMER但是类是CUSTOMER_DATA。
如果我这样做:
NSArray* arrCustomers = [thisSalesRepData.hasCustomers allObjects];
for(CUSTOMER_DATA* thisCustomer in arrCustomers) {
DDLogVerbose(@"%@", thisCustomer.customer_name);
}
我得到了空白
如果我记录这个客户,我会得到:
Thursday, 07 November 2013 | 15:14:37 | AppViewController | getClientList: | 312 | <CUSTOMER_DATA: 0x8c85260> (entity: CUSTOMER; id: 0x8c849a0 <x-coredata://AC4450A8-3D03-4E9A-8EFD-47055FA0683A/CUSTOMER/p173> ; data: <fault>)
如何获取客户信息?
编辑:以下是我设置客户的方式 - 我已经验证了dictThisCustomerRevised具有值。:
//loop
//get the entity description for this class
NSEntityDescription* customerEntityDescription = [NSEntityDescription entityForName:@"CUSTOMER" inManagedObjectContext:_moc];
//init class
CUSTOMER_DATA* thisCustomer = [[CUSTOMER_DATA alloc]initWithEntity:customerEntityDescription insertIntoManagedObjectContext:_moc];
//populate it
thisCustomer.cf1_level_1_cd = [dictThisCustomerRevised objectForKey:@"cf1_level_1_cd"];
thisCustomer.customer_address = [dictThisCustomerRevised objectForKey:@"customer_address"];
thisCustomer.customer_city = [dictThisCustomer objectForKey:@"customer_city"];
thisCustomer.customer_zip_base = [dictThisCustomer objectForKey:@"customer_zip_base"];
thisCustomer.customer_num = [dictThisCustomer objectForKey:@"customer_num"];
thisCustomer.customer_name = [dictThisCustomer objectForKey:@"customer_name"];
thisCustomer.customer_class_cd = [dictThisCustomer objectForKey:@"customer_class_cd"];
thisCustomer.state_cd = [dictThisCustomer objectForKey:@"state_cd"];
[arrSalesRepCustomers addObject:thisCustomer];
NSSet* setSalesRepCustomers = [[NSSet alloc] initWithArray:arrSalesRepCustomers];
[thisSalesRepData addHasCustomers:setSalesRepCustomers];
//save this
NSError* error;
[_moc save:&error];
答案 0 :(得分:0)
可能未设置customer_name
(因为日志显示您有实际的客户实例)。
答案 1 :(得分:0)
您的代码是正确的。您的thisCustomer
日志声明表明它已正确检索。实际上,尽管您写的是“我得到NULL”,但您实际上可以按预期获得客户数据。
不要对日志语句中的fault
这个词感到困惑。它只是意味着如果需要,可以在幕后检索更多细节。没什么好担心的。
可能对您有所帮助的一点是清理您的实体名称。您的代码将以这种方式变得更具可读性:
像这样,您的代码应该变得更易于理解,并且不易出错。
为了获取您的客户信息,只需记录thisCustomer.city
之类的内容,您就会发现它可以毫无问题地被检索出来。