【问题标题】:Save core data date as a array将核心数据日期保存为数组
【发布时间】:2020-10-09 02:12:57
【问题描述】:

我的 swift 代码目标是在每次调用该函数时保存一个日期。发生的事情是我只是将第一个日期保存到核心数据中。我假设我需要将其保存为数组。这样可以存储多个日期和时间。打印的只是一个日期。我希望打印每个日期,谢谢。

let date = Date()

func enterData() {

    let appDeldeaget = UIApplication.shared.delegate as! AppDelegate
    let context = appDeldeaget.persistentContainer.viewContext        
    let entity = NSEntityDescription.entity(forEntityName: "Data", in: context)
    let theTitle = NSManagedObject(entity: entity!, insertInto: context)
    theTitle.setValue(date.format(), forKey: "date")

    do {
        try context.save()
        itemName.append(theTitle)
    }
    catch {

    }
    print(date)        
}

【问题讨论】:

    标签: arrays swift date core-data


    【解决方案1】:

    您可以使用Transformable 类型来保存数组。

    我使用相同的方法来保存字典

    然后你可以将Codegen更改为Manual/None,点击Editor->Create NSManagedobject Subclass(屏幕顶部)。

    Xcode 会为你生成Data

    【讨论】:

    • 并将Transformer 设置为NSSecureUnarchiveFromDataTransformer 以消除警告。
    【解决方案2】:

    最简单的方法是创建一个名为 dates 的不同表,该表与您的表具有 1 对多 关系。

    Dates 表将包含 3 个字段(ownerID、date、order) 所以你可以只在表格中添加一行,为要在数组中实现日期的对象添加一个日期。

    在您的表之后,您可以获取所有具有相同 ownerID 的日期(按订单排序)并创建您的自定义数组。

    【讨论】:

      【解决方案3】:

      如果您希望每次调用函数时它都是新的,则应在函数中设置日期变量。

      要打印所有项目,您可以使用循环:

      do {
          try context.save()
          items.append(theTitle)
      }
      catch {
      } 
      for item in items {
          print(item)
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-10
        • 1970-01-01
        相关资源
        最近更新 更多