我有一个订单,它与单位之间存在"对多"关系.当我try 按顺序记录单元(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'>";

还有,为什么我只需要单位,却要打印整个对象?

推荐答案

这不是一个错误——这是核心数据的一个特征,称为"断层".以下是苹果的description:

出错会减少应用程序消耗的内存量.A.

托管对象错误是相应类的实例,但

如果你想看到每一个单位对象,那么你必须明确地访问它们.try 以下方法:

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

Objective-c相关问答推荐

日期更改时的 UIDatePicker

防止同时多个按钮

NSError 和 __autoreleasing

NSLocalizedString 格式

如何使用整数值作为键在 NSMutableDictionary 中设置值?

iOS 正确使用 @weakify(self) 和 @strongify(self)

iOS 中 textField 上的Electron邮件验证

在 Xcode 5 中运行代码覆盖时出现数十个profiling:invalid arc tag

我如何使用 initWithCoder 方法?

发出许多网络请求的 iOS 应用程序的最佳架构?

如何将小时数添加到 NSDate?

在 Objective-C 中,你在哪里声明一个常量?

如何使用 iOS 创建一个大的红色 UIButton?

Objective-C 中的非正式协议?

Objective C 中的对象分配和初始化

UITableViewCell 点击展开

zoom UIView 及其所有子项

iOS 7 中的 UITextView 链接检测

UIImage上的圆角

如何实现全局 iPhone 异常处理?