【问题标题】:How can I store a one to many, where many only has one attribute in CoreData (simplified)?如何存储一对多,其中许多在 CoreData(简化)中只有一个属性?
【发布时间】:2012-05-12 10:40:56
【问题描述】:

我有一个实体计划。 这个时间表有一些属性,如名称、开始日期、结束日期等。 它与时间也有一对多的关系。 Times 是一个实体,只有一个 NSDate 类型的“时间”属性。

所以每个时间表可以有一次或多次。

我之前的实现是一个 NSArray,我将其转换为 NSData 用于存储在 schedule 实体中。我不喜欢那样。

现在 schedule.times 给出了一个带有 Time 实体的 NSSet。 所以当我想要一个 for 循环时,我需要这样做:

for(Time *time in schedule.times) {
    NSLog("%@", time.time);
}

我的问题:有没有办法设置它以便我可以执行以下操作?

for(Time *time in schedule.times) {
    NSLog("%@", time);
}

【问题讨论】:

    标签: xcode core-data one-to-many


    【解决方案1】:

    好吧,对于您询问的特定简单案例,您可以简单地在 Time 类上实现 -description 方法以返回 self.time.description

    当您使用 %@ 格式说明符将对象格式化为字符串时,它只是询问对象的描述并打印结果字符串。

    但是,我怀疑您的简单案例具有误导性,因为您并不真正关心记录对象。你真正关心的是什么?

    【讨论】:

    • 是的,你是对的。我对仅记录它不感兴趣。我想有更简单的方法可以做到这一点。我正在寻找一种方法,其中 schedule.times 返回 NSDates 的 NSSet 而不是包含 NSDate 的时间的 NSSet。
    • 您可以使用[schedule valueForKeyPath:@"times.time"]。将-valueForKey: 应用于NSSet 会合成一组通过将-valueForKey: 应用于该集合的成员而获得的所有值。
    • @ken,把它放在你的答案中,我会删除我的 - 交叉张贴在那里!
    猜你喜欢
    • 1970-01-01
    • 2018-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-11
    • 1970-01-01
    相关资源
    最近更新 更多