使用 NSMutableArray 保存到核心数据

Posted

技术标签:

【中文标题】使用 NSMutableArray 保存到核心数据【英文标题】:Saving to Core Data with NSMutableArray 【发布时间】:2009-11-18 09:51:24 【问题描述】:

对这个有点头疼,想知道是否有人可以提供一些建议!

我正在使用 Core Data 实现持久存储。

我有两个实体 Car 和 Driver。一辆车可以有很多司机。

在一个视图中,我正在收集驱动程序并将它们存储到 NSMutableArray

这个数组被传递到另一个视图,在某个时候我会将它保存在汽车上

我想做的是将数组中的每个驱动程序保存在驱动程序表中的单独行中(只是它们的名称(NSString),它将分配给汽车。

我可以在数据库中为 Car 创建一个条目,但我很难将每个驾驶员保存在分配给该汽车的驾驶员表中的单独行中。

任何正确方向的建议或指示将不胜感激!

干杯:)

【问题讨论】:

【参考方案1】:

很难为您的答案封装一个完整的解决方案,因为您的问题相当广泛而没有看到您的代码。

尝试浏览 Apple 出色的 Books 和 Recipes 示例应用程序,它们涵盖了您在自己的项目中取得进展所需的核心数据概念。

【讨论】:

【参考方案2】:

您提到您同时拥有 Car 和 Driver 实体,但听起来您正试图将您的司机姓名直接保存为汽车的属性。为什么你只是将他们的NSString *name 保存到车上?

您应该简单地更新汽车与其驾驶员之间的关系,而不是这样做。如果您将实体实现为自定义类(我强烈推荐它 - see this ADC guide),那么当您想要更新谁驾驶什么汽车时,您可以简单地说:[car addDriversObject:driver][car removeDriversObject:driver]

就像 Alex 所说的那样,您可能需要确保自己牢牢掌握核心数据,然后再独自走得太远。

【讨论】:

非常感谢您的意见...非常感谢:)【参考方案3】:

我不是使用核心数据的专家,但您可以尝试使用 NSKeyArchiver 从您的数组中获取数据并将返回的 NSData 对象保存到您的数据库中。它适用于 sqllite 数据库。

【讨论】:

以上是关于使用 NSMutableArray 保存到核心数据的主要内容,如果未能解决你的问题,请参考以下文章

iPhone Core Data 对象添加到 NSMutableArray

核心数据触发错误将对象添加到 NSMutableArray?

ios核心数据:如何更改NSManagedObject而不将其保存到上下文中

将 NSMutableArray 保存到 plist [关闭]

在核心数据中获取 Swift._SwiftDeferredNSArray' (0x1096d26b8) 到 'NSMutableArray

如何将 NSMutableArray 保存到 iPhone 的 plist 中