上下文
我使用 Parse.com 作为我的后端。 Parse 使您能够存储指向另一个类的指针数组。在我的例子中,对于每个用户,如果他们是企业主,我有一系列指向他们拥有的企业的指针。该数组如下所示:[{"__type":"Pointer","className":"Businesses","objectId":"auUS4I8ILh”}]
现在,在我的应用程序中,我有一个允许用户发布到时间轴的类。如果用户也是企业主,它将允许用户决定以他们自己的身份发帖还是以他们拥有的企业的身份发帖。为了做到这一点,当我查询正在发帖的用户时,我在我的“_User”类中包含了保存指针数组的键。
问题
好吧,我的问题是当我试图从指针数组中获取信息时。如果我将当前用户打印到控制台,它会清楚地显示该列中的信息,如下所示。但是,我想不出访问此信息的好方法。
最初,我试过这个:
if let businessOwner: [AnyObject] = self.currentUser.objectForKey("BusinessOwner") as! [AnyObject] {...}
在此之后,代码的下一部分应该通过迭代获取对象 ID,以便我可以查询业务信息:
for business in businessOwner {
objectIDArray.append(business.objectId as! String)
}
这最初在指针数组中只有一个业务时有效,但最终甚至停止工作。我试过在这里和那里改变一些东西,但我不断遇到的两个问题是:1) if...let 语句失败了,表明没有什么可以放入businessOwner 数组(我知道这不是真的,因为我可以在控制台中看到打印输出),或者 2) businessOwner 数组被实例化和填充,但是随后程序在尝试访问业务的对象 ID 时崩溃,可能与我尝试访问作为对象 ID 的字符串的方式有关。
为了清楚起见,这是在迭代期间分配 business 之后字典的样子:
所以本质上,我必须做些什么才能将我的“BusinessOwner”列中的对象分配给一个数组,然后,我如何才能获得对象 ID 以便将它们用于我的查询?几天来我一直在与这个问题作斗争。如果有人能在这里帮助我,那就太棒了。
请您参考如下方法:
好吧,我明白了。这不起作用的部分原因是我试图访问对象 ID,但正如您在控制台图片中看到的那样,objectId 错误地与类名相关联,因此每次都找到 nil。我相信那是一个 Parse 问题。如果你来到这个线程寻找如何从指针数组访问数据,方法如下:
if let pointerObjects = parseClassObject["arrayOfPointers"]! as? [AnyObject] {
for object in pointerObjects {
if let id = object["objectId"] as? String {
//do your own thing here
}
}
...}
