【问题标题】:FetchRequst issue with data fault数据错误的 FetchRequst 问题
【发布时间】:2017-03-10 07:19:00
【问题描述】:

当我向 CoreData 的一个实体插入数据时,所有行都已成功插入(已保存)。

但是当我尝试使用 FetchRequest 获取数据时,即使插入的行数是 3 或 4 或任何(超过 1),也只有一行数据。 剩余的行没有被获取。当我打印获取结果时,

它说 - 错误

0:<EquipmentDetails: 0x6000000bad60> 
(entity: EquipmentDetails; id: 0xd000000000040000 
coredata:/EquipmentDetails/p1> **data:fault>)**

我没有了解核心数据后端的情况?

插入代码

func insertEqipToLocalDb()
    {
        let mobileNo : String = UserDefaults.standard.string(forKey: "phoneNumber")!

        let equipDetailsItem = NSEntityDescription.insertNewObject(forEntityName: "EquipmentDetails", into:managedObjContext) as! EquipmentDetails

        for (index,item) in array_IDEquip.enumerated()
        {
            equipDetailsItem.mobileNumber = mobileNo
            equipDetailsItem.type = array_typeEquip[index]
            equipDetailsItem.name = array_nameEquip[index]
            equipDetailsItem.startDate = array_sDateEquip[index]
            equipDetailsItem.endDate = array_eDateEquip[index]
            equipDetailsItem.equpID = Int16(item)
            equipDetailsItem.serviceDatesStr = array_serviceDateEquip[index]
        }
        do
        {
            try managedObjContext.save()
            UserDefaults.standard.set("AlreadyInstalled", forKey: "statusInstallation")
        }

        catch
        {
            Exception.insertExceptionDetails(errorMsg: error as NSError, context: managedObjContext)
        }
    }

//获取代码

let request = NSFetchRequest<NSFetchRequestResult>()
    let entity =    NSEntityDescription.entity(forEntityName:"EquipmentDetails", in: managedObjContext)
    request.entity = entity
    do
    {
        let fetchResults  = try managedObjContext.fetch(request)

        for r in fetchResults
        {
            typeEquipArray.append((r as AnyObject).value(forKey:  "type") as! String)
        }
    }
catch let error as NSError
{
    Exception.insertExceptionDetails(errorMsg: error, context: managedObjContext)
}

【问题讨论】:

  • 您的代码示例?
  • 根据您读取数据的方式,我会说...哎呀,没有代码,所以没有人可以说太多
  • @Socraties Srikanth 请使用所需的代码更新您的问题!
  • Core Data Fault的可能重复

标签: ios swift core-data nsfetchrequest


【解决方案1】:

在这一行:

let equipDetailsItem = NSEntityDescription.insertNewObject(forEntityName: "EquipmentDetails", into:managedObjContext) as! EquipmentDetails

您创建 一个 实例。在接下来的循环中,您在同一个实例上一遍又一遍地设置typename 等属性的值。然后保存更改,其中仅包括那个对象。如果您希望每次通过循环时都有一个 EquipmentDetails 的差异实例,您需要在循环内创建实例。

“故障”消息不是错误,除非您尝试访问属性值并发现它们不存在。它是 Core Data 工作方式的一部分。有关更多详细信息,请参阅 Harshal Valanda 在 cmets 中链接的答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多