将 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 对象 - 这会在您尝试追加到它时导致崩溃。
我目前正在使用 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 对象 - 这会在您尝试追加到它时导致崩溃。