将PFObject附加到数组 - EXC_BAD_ACCESS

时间:2015-06-17 22:57:13

标签: ios swift parse-platform exc-bad-access

我目前正在使用Swift和Parse,并遇到了一个我在过去几个小时内无法解决的问题。

点击按钮,我试图将一个Employee对象添加到Event对象的eventAttendee数组中。

@IBAction func joinEvent(sender: AnyObject) {
    var employee = Employee.currentUser()
    employee.events.append(event)
    employee.saveInBackgroundWithBlock(nil)

    event.eventAttendees.append(employee)
    event.saveInBackgroundWithBlock(nil)
}

该事件已添加到员工事件中,但员工未添加到事件参与者列表中。该函数在append(employee)行上抛出EXC_BAD_ACCESS(code = 1,address = 0x0),没有其他错误消息。

我的活动课程如下:

class VolunteerEvent : PFObject, PFSubclassing {

@NSManaged var eventName: String
@NSManaged var dateOfEvent: NSDate
@NSManaged var eventDescription: String
@NSManaged var eventURL: String?
@NSManaged var eventImage: PFFile

@NSManaged var contactEmail: String
@NSManaged var contactPhone: NSNumber

@NSManaged var eventOrganizer: Employee
@NSManaged var eventAttendees: [Employee]

class func parseClassName() -> String {
    return "VolunteerEvent"
}
}

我的Employee类扩展了PFUser,但是当我打印出我的员工的描述时,我得知它是PFUser。我不知道这是不是问题。当我打印出事件时,看起来我希望它看起来像。我还尝试将eventAttendees切换为PFUser的数组,而不是员工,但这也没有。

非常感谢任何帮助。谢谢。

2 个答案:

答案 0 :(得分:0)

您需要在添加数组之前初始化数组。试试var eventAttendees: [Employee] = []

答案 1 :(得分:0)

我以这种方式对我的PFObject进行子类化,

class Person : PFObject, PFSubclassing {

    var firstName: String {
        get {
            return objectForKey("firstName") as? String ?? ""
        }
        set {
            setObject(newValue, forKey: "firstName")
        }
     }
}

这样,如果解析数据库中没有字符串,我不会得到nil,我得到一个空字符串。

您可以使用数组执行此操作,实际上是所有对象属性。

如果没有返回任何内容,那么你将获得一个空的Employee数组,而不是一个nil对象 - 当你尝试追加它时会导致崩溃。