我有一个与单位有“对多”关系的订单。当我尝试按顺序记录单位 (NSSet) 时,出现错误:
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Order"
inManagedObjectContext:mainContext];
[fetchRequest setEntity:entity];
NSArray *fetchedObjects = [mainContext executeFetchRequest:fetchRequest
error:nil];
for (Order *order in fetchedObjects) {
NSLog(@"%@", [order units]);
break;
}
[fetchRequest release];
结果是:
Relationship 'units' fault on managed object (0x6d9dd00) <Order: 0x6d9dd00> (entity: Order; id: 0x6d88e40 <x-coredata://97A3F3D5-ABA7-499A-A460-5E25CF49C528/Order/p1> ; data: {
composition = Hemlock;
condition = "";
consignee = "";
consigneeCompanyName = "";
contactAlternatePhone = "";
contactEmail = "";
contactFirstName = "";
contactLastName = "";
contactPhone = "";
customer = "Havard Empire";
customerCompanyName = "";
customerNotes = "";
dateDue = "1/13/2012 12:00:00 AM";
dateEntered = "1/6/2012 12:00:00 AM";
dateOrdered = "1/6/2012 12:00:00 AM";
deliveryAddress1 = "";
deliveryAddress2 = "";
deliveryCity = "";
deliverySpecialInstructions = "";
deliveryState = "";
deliveryZip = "";
depth = 01;
detail = "";
freightRate = "";
grade = Cull;
instructionsDirectionsNotes = "";
lastUpdated = "1/6/2012 3:00:43 PM";
length = 01;
location = "Lucedale, ms";
matsPerLoad = "";
memoLineNotes = "";
notes = "";
orderID = 201205134922479;
orderNumber = 01062012;
pUP = Cable;
pricePerItem = "";
purchaseOrderNumber = "";
pushToQuickBooks = True;
quantity = 0;
quickbooksCompany = 1;
salesman = "Accounting Adj";
separateRate = False;
taxRate = "";
totalLoads = "";
type = "2ply Mat";
units = "<relationship fault: 0x6dacf20 'units'>";
vendorID = 10;
width = 01;
})
单位未打印。它说"<relationship fault: 0x6dacf20 'units'>";
另外,当我只想要单位时,为什么它要打印整个对象?
这不是一个错误——它是 Core Data 的一项功能,称为“故障”。这是苹果的描述:
故障会减少应用程序消耗的内存量。 A
错误是一个占位符对象,表示托管对象
尚未完全实现,或者是一个集合对象
代表一种关系:
托管对象故障是适当类的实例,但是
它的持久变量尚未初始化。关系错误
是集合类的子类,代表
关系。故障允许核心数据设置边界
对象图。因为故障没有实现,所以管理对象故障
消耗更少的内存,并且与故障相关的托管对象不会
根本需要在内存中表示。
如果您想查看每个 Unit 对象,那么您必须专门访问它们。请尝试以下操作:
for (Order *order in fetchedObjects) {
for (Unit *unit in [order units]) {
NSLog(@"%@", unit);
//I am not at a computer, so I cannot test, but this should work. You might have to access each property of the unit object to fire the fault, but I don't believe that is necessary.
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)