解析swift子类关系

时间:2015-09-05 20:39:00

标签: ios swift parse-platform

我正在为我的swift应用程序实现解析。 我有子类,其中子类有一个成员对象,它是另一个解析子类。当我尝试访问该对象时,应用程序会因未捕获的异常而获得“终止”应用程序' NSInvalidArgumentException',原因:' - [fve.Workout sets]:发送到实例的无法识别的选择器0x1740d0d10'"

我知道如何访问PFObject子类的元素本身是PBObject子类吗?

以下是我如何宣布对象:

class Workout: PFObject, PFSubclassing {
    @NSManaged var date: NSDate
    @NSManaged var workoutTime: Int
    @NSManaged var sets: [ExerciseSet]
    ...
}

class ExerciseSet: PFObject, PFSubclassing {
    @NSManaged var exercise: Exercise
    @NSManaged var sets: [SingleSet]
    ...
}

当我尝试访问该字段时,这会导致崩溃:

for workout in historicalWorkoutsParse {
    println("workout \(workout)")
    let exerciseSets = workout.sets
    println("exerciseSet: \(exerciseSets)")
}

即使我确实看到对象中存在数据:

workout <Workout: 0x1740cf8f0, objectId: A3218Oxiuh, localId: (null)> {
    date = "2015-09-05 19:39:43 +0000";
    sets =     (
        "<ExerciseSet: 0x1740cf960, objectId: V54sAUKSMf, localId: (null)>"
    );
    user = "<PFUser: 0x174109240, objectId: LbeTd8GqwU, localId: (null)>";
    workoutTime = 0;
}

谢谢!

3 个答案:

答案 0 :(得分:3)

如果您使用PFSubclassing,则需要先致电registerSubclass才能使用该课程。还必须在Parse.setApplicationId电话之前完成:

Workout.registerSubclass()
ExerciseSet.registerSubclass
//Parse.setApplicationId

答案 1 :(得分:2)

您必须在Exercise.registerSubclass()

之前Parse.setApplicationId("YOUR_APPLICATION_ID")之前致电application:didFinishLaunchingWithOptions:

您还需要覆盖自定义子类

中的parseClassName

答案 2 :(得分:2)

Parse似乎并不喜欢我正在使用&#34; set&#34;作为对象名称。当我把它改成&#34; exerciseSet&#34;它似乎工作(当我作为字典访问它时它也有效...锻炼[&#34;设置&#34;])