核心数据:访问链接的实体属性

时间:2017-10-06 18:31:50

标签: ios swift core-data

我有一个名为“Expense”的实体,它与另一个名为“Trip”的实体相关联。 如何访问与每笔费用相关联的旅行?

enter image description here

我正在使用NSManagedObjects,举个例子,这是我的一个方法:

  func fillCellWithExpense(cell: DayExpensesViewCell, expense: NSManagedObject) -> DayExpensesViewCell {
    let amount = expense.value(forKey: AMOUNT) as! Double
    cell.amountLabel?.text = String(format:"%.2f", amount)
    let category = expense.value(forKey: CATEGORY) as! String
    cell.categoryLabel?.text = category
    switch category {

    case "Transportation":
      cell.line.backgroundColor = Colors.C1
    case "Shopping":
      cell.line.backgroundColor = Colors.C2
    case "Food":
      cell.line.backgroundColor = Colors.C3
    case "Accomodation":
      cell.line.backgroundColor = Colors.C4
    case "Fun":
      cell.line.backgroundColor = Colors.C5
    case "Coffee":
      cell.line.backgroundColor = Colors.C6
    case "Groceries":
      cell.line.backgroundColor = Colors.C7
    default:
      cell.line.backgroundColor = Colors.C8
    }

return cell
}

如果我想访问费用之旅的名称,我可以简单地将NSManagedObject转换为费用,然后访问它的属性吗?

let e = expense as! Expense
e.trip.value(forKey: "name")

1 个答案:

答案 0 :(得分:0)

在模型编辑器中,您需要添加一个关系及其与两个模型的反转(看起来您至少部分完成)。

如果我正确猜测你的模型,请在Expense to Trip(称之为trip)上设置一对一的关系。在Trip to Expense上设置一个多对多的关系(可能称之为费用),并将其设置为与您在Expense上的关系(称为trip)的反向。

然后,如果您的目标是Swift,则可以在trip上访问Expense;例如...

var expense = Expense() expense.trip // ...