gpt4 book ai didi

swift - 从核心数据中检索 NSOrderedSet 并将其转换为实体 managedObjectSubclasss

转载 作者:可可西里 更新时间:2023-11-01 02:01:49 25 4
gpt4 key购买 nike

MY DESIGN

我正在制作一个健身应用程序来学习核心数据,我发现我需要让用户将每次执行的锻炼存储为一个 WorkoutLog 项,并且在其中应该有一系列代表该锻炼表现的锻炼日志(它包含每个 Action 以及对实际练习设计的引用)。

问题是过了一会儿我意识到我需要订购这些,以便下次我想向用户展示他们的锻炼时,进行锻炼的顺序应该是相同的。

所以我检查了图像右上角的“已订购”,现在我的代码急需更新。我已经尝试尽可能多地阅读有关使用 NSOrderedSet 以及如何从核心数据中获取它们然后操作它们的信息,但我并没有真正发现对我有多大用处。 (我没有 objective-c 的经验)

例如我的代码曾经是:

static func deleteWorkoutLog(_ workoutLogToDelete: WorkoutLog) {

guard let exerciseLogsToDelete = workoutLogToDelete.loggedExercises as? Set<ExerciseLog> else {
print("error unwrapping logged exercises in deleteWorkoutLog")
return
}

我收到错误:.../DatabaseFacade.swift:84:77: Cast from 'NSOrderedSet?'不相关的类型“设置”总是失败

所以我学到的关于集合和核心数据的知识似乎不再适用。

我远不是编程专家,但我非常渴望学习如何访问 loggedExercises 实例。

TLDR;有没有办法将 NSOrderedSet 转换为我可以使用的东西?我们通常如何使用核心数据中的 NSManagedSets?我们将它们转换为 Arrays 还是 MutableSets?我非常感谢一两个关于如何开始检索和使用这些有序集合的例子!

谢谢

最佳答案

对于任何想知道如何开始在核心数据中使用 orderedSets 的人:

在设置我的 WorkoutLog.loggedExercises“对多”关系后,我设法通过 mutableOrderedSetValue 函数访问它们,如下所示:

static func deleteWorkoutLog(_ workoutLogToDelete: WorkoutLog) {

let orderedExerciseLogs: NSMutableOrderedSet = workoutLogToDelete.mutableOrderedSetValue(forKey: "loggedExercises")

let exerciseLogsToDelete = orderedExerciseLogs.array

for exerciseLog in exerciseLogsToDelete {

guard let exerciseLog = exerciseLog as? ExerciseLog else {
return
}

到目前为止效果很好。

为了重新排列 NSOrderedSet,我最终做了这样的事情:

    // Swap the order of the orderedSet
if let orderedExerciseLogs: NSOrderedSet = dataSourceWorkoutLog.loggedExercises {

var exerciseLogsAsArray = orderedExerciseLogs.array as! [ExerciseLog]

let temp = exerciseLogsAsArray[indexA]
exerciseLogsAsArray[indexA] = exerciseLogsAsArray[indexB]
exerciseLogsAsArray[indexB] = temp

let exerciseLogsAsOrderedeSet = NSOrderedSet(array: exerciseLogsAsArray)
dataSourceWorkoutLog.loggedExercises = exerciseLogsAsOrderedeSet

}

关于swift - 从核心数据中检索 NSOrderedSet 并将其转换为实体 managedObjectSubclasss,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45716494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com