ios - 第二次设置核心数据对象会导致 EXC_BAD_ACCESS

标签 ios objective-c core-data exc-bad-access

我有一个具有两个关系的客户对象:一个文档和一个 Assets 。

当我创建 Assets 时,我有一个条件,即检查客户中是否存在文档对象。如果它不存在,我将创建一个并设置文档的客户关系。

之后,我创建了 Assets 。但是,当我尝试使用 EXC_BAD_ACCESS 将客户设置为 Assets 时,我遇到了崩溃。

奇怪的是这段代码可以正常工作,但我不知道会发生什么变化会突然导致这里崩溃。

这是代码:

if (![customer inspectionDocument])  //check if a document exists
{
    // if it doesn't create one
    Document *document = [Document newDocument];
    document.customer = customer;
    //sets additional properties
}

// now create the asset
Asset *asset = [Asset newObject];
asset.customer = customer;   // <---- crash occurs here
//sets additional properties

最佳答案

我假设您正在使用关系来存储对您的文档和 Assets 的客户引用。通常,你们应该有相反的关系。您是否尝试过在客户对象上设置文档属性而不是相反?

if (![customer inspectionDocument]) {

    // if it doesn't create one
    customer.document = [Document newDocument];
}

customer.asset = [Asset newObject];

关于ios - 第二次设置核心数据对象会导致 EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18360862/

相关文章:

objective-c - 如何定义 UIColor 的常量值?

ios - iOS CoreData 中的孤立对象

ios - 来自 NSFetchedResultController 的 NSManagedObjectID 数组

ios - 检测是否手动输入了 HealthKit 事件

xcode - 缺少 iOS Xcode 模板

ios - 在没有 SecTrustGetTrustResult 的情况下,如何在 iOS 上诊断证书可恢复信任失​​败?

objective-c - 基于浏览器的 C 和 Objective-C 教程

objective-c - 网络拓扑信息

objective-c - setFetchBatchSize 似乎无法正常工作

iphone - 如何将数组数据传递给另一个方法