将 PFObject 附加到数组 - EXC_BAD_ACCESS

Appending PFObject to Array - 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 如下所示:

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"
}
}

我的员工 class 扩展了 PFUser,虽然当我打印出我的员工的描述时,我得到它是一个 PFUser。我不知道这是否是问题所在。当我打印出事件时,看起来就像我期望的那样。我还尝试将 eventAttendees 切换为 PFUser 数组而不是 Employee 数组,但这也不起作用。

如有任何帮助,我们将不胜感激。谢谢。

您需要先初始化数组,然后再添加到数组中。尝试 var eventAttendees: [Employee] = []

我以这种方式子类化我的 PFObjects,

class Person : PFObject, PFSubclassing {

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

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

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

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