ios - 您将如何为 CoreData 建模以在 Swift 中保存自定义对象数组?

标签 ios xcode swift core-data

我有两个名为 PreviousWorkout 的核心数据实体, 和 ExerciseData . PreviousWorkout实体拥有以下属性:date , workoutName , 和 exercises . exercises应该是 ExerciseData 的数组.在使用 Editor > Create NSManagedObject Subclass 创建类之后,我对 ExerciseData 做了同样的事情。实体。

我不确定这是否是使用 Core Data 存储数据的正确方法。我的目标是拥有一个 PreviousWorkout其中包含 ExerciseData 的数组以及dateworkoutName .

我在代码中创建它的方式是创建一个 managedbjectContext与:

let managedObjectContext = (UIApplication.sharedApplication().delegate as AppDelegate).managedObjectContext

然后我创建一个 PreviousWorkout数组:

let newItem = NSEntityDescription.insertNewObjectForEntityForName("PreviousWorkout", inManagedObjectContext: managedObjectContext!) as PreviousWorkout

我将我所有的东西( dateworkoutName )添加到 newItem ,然后我尝试创建一个 ExerciseData 数组:

var exerciseData = NSEntityDescription.insertNewObjectForEntityForName("ExerciseData", inManagedObjectContext: managedObjectContext!) as [ExerciseData]

此时程序崩溃了。我意识到最后一行是非常错误的,但我不确定如何创建 ExerciseData 的数组。 .创建数组后,我想附加到它,然后在设置 newItem.exercises 之前为其属性设置值等于 ExerciseData对象。

这是创建包含数组的 Core Data 对象的正确方法吗?如何创建 [ExerciseData] 的数组?

提前致谢

最佳答案

一个实体本质上是一个表,因此您可以在其中存储许多锻炼并创建一个锻炼实体,而不仅仅是一个 PreviousWorkout 实体。那么你应该有一个 Exercise 实体并在其中存储许多练习。然后为了在 Core Data 中存储一个“数组”,您在两个实体之间建立关系(可能是多对多关系,因为每个锻炼可以有很多练习,每个锻炼可以是许多锻炼的一部分)。然后,要将练习添加到锻炼对象,只需将它们附加到锻炼对象的 exercises 属性,该属性是一个 NSSet,它指向锻炼对象。

现在您有许多锻炼对象和锻炼对象,您可以通过使用获取请求并按日期或您想要排序的任何属性对所有锻炼进行排序并获取获取请求的第一个结果来获取以前的锻炼.

你像这样创建一个新练习:

let exerciseData = NSEntityDescription.insertNewObjectForEntityForName("Exercise", inManagedObjectContext: managedObjectContext!) as Exercise

关于ios - 您将如何为 CoreData 建模以在 Swift 中保存自定义对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28754641/

相关文章:

iphone - 存取iPhone的日历事件

ios - iOS 中的 AWS SDK 常量未解析标识符

ios - Swift:寻求有关完成 Storyboard / View Controller 之间特定流程的建议

ios - TableViewController 中各部分上方的 Xcode 文本字段

swift - 我可以设置 CocoaPods 框架 Swift 版本吗?

ios - CollectionView 与 TableView(快速)

ios - iOS 模块化方法的已知问题?

ios - Xcode 5 : Trying to link text field to UIViewController

ios - 使用带有 audiokit 的 SF2 声音字体库将 MIDI 文件转换为音频文件

iphone - iPhone 之间的屏幕共享