Обновлено с ответом для других Если у вас возникла эта проблема ...
Проблема Я хочу использовать Realm Objects, а не статический массив внутри функции для возврата вывода объекта.
Решение вам нужно настроить объект вместо структуры ....
например.
это:
class WorkoutGeneratorObject: Object {
@objc dynamic var name = ""
@objc dynamic var maxReps = 0
convenience init(name: String, maxReps: Int) {
self.init()
self.name = name
self.maxReps = maxReps
}
не это:
struct WorkoutExercise : Hashable, Equatable{
let name : String
let reps : Int
var hashValue: Int {
return name.hashValue
}
static func == (lhs: WorkoutExercise, rhs: WorkoutExercise) -> Bool {
return lhs.name == rhs.name
}
затем отформатируйте возвращение функции следующим образом: в объекте класса :
class WorkoutGeneratorObject: Object {
@objc dynamic var name = ""
@objc dynamic var maxReps = 0
convenience init(name: String, maxReps: Int) {
self.init()
self.name = name
self.maxReps = maxReps
}
func generateExercise() -> WorkoutExercise {
return WorkoutExercise(
name: name,
reps: Int(arc4random_uniform(UInt32(maxReps)))
)
}
}
Затем вы можете использовать это в других функциях вашего кода, например:
struct WorkoutGenerator {
// This is the "pool" of exercises from
// which it generates a workout (similar to your
// `exerciseBankArray`)
let realmExercisePool = realm.objects(WorkoutGeneratorObject.self)
let exercisePool: [WorkoutExerciseGenerator]
// Min and max amount of workouts
let minCount: Int
let maxCount: Int
// Generates a workout from the generator
func generate() -> Workout {
let amount = Int(arc4random_uniform(UInt32(maxCount - minCount))) + minCount
let myExercises : [WorkoutExercise] = (0..<amount).map { _ in
// Selects an exercise generator at random
let index = Int(arc4random_uniform(UInt32(exercisePool.count)))
// Generates a random workout exercise from this generator
return realmExercisePool[index].generateExercise()
}
return Workout(workoutExercises: myExercises)
}