我目前正在使用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的数组,而不是员工,但这也没有。
非常感谢任何帮助。谢谢。
答案 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对象 - 当你尝试追加它时会导致崩溃。