Parse和Swift - 先前删除的指向不存在对象的指针不断重现

时间:2015-11-12 20:19:38

标签: swift pointers parse-platform installation

在Parse上的User类中,我有一个指针对象数组。他们指向另一个Parse课程,让我们称之为" Tracker"对象。

在我的代码中,我使用removeObject删除指针。接下来,我使用object.delete()

删除对象本身

当我刷新Parse Web数据浏览器时,指针和对象都消失了,所以一切似乎都在工作。

以下是出现问题的方案:

使用完全清晰的Parse后端,我注册了我的应用程序,它会自动登录。登录后,我创建2"事件",这是Parse中的对象。这很有效。对于用户创建的每个事件,都会在其User对象的数组中创建指针。这一系列指针指向那些" Tracker"我上面提到的对象。

接下来,当用户同时登录到另一台设备或模拟器时,会正确加载它们的2个事件。当用户删除其中一个事件时,Parse后端会正确更新。 1个事件,1个跟踪器对象,1个指向User类中跟踪器对象的指针。一切都好。

现在,当用户返回原始设备时,应用会提示他们注销,因为登录已过期。都好。现在,问题在于:

当用户重新登录原始设备时,指向" Tracker"刚刚在上一步中删除的对象重新出现在User的跟踪器对象指针数组中。对象本身,"跟踪器"对象,虽然没有重新出现。大多数情况下,这会导致应用程序崩溃:

fatal error: NSArray element failed to match the Swift Array Element type

如果我手动删除" ghost"来自Parse的指针,并重新运行应用程序,一切都按预期运行。

我在登录时尝试在用户上运行fetch()。没有什么区别。

好像User对象正在本地缓存或存储在原始设备上,然后当它登录时,它正在替换Parse上的数据。我不知道怎么回事。

我很乐意发布截图,代码等。请帮助!

1 个答案:

答案 0 :(得分:0)

我解决了。

它一定是Parse中的一个错误,因为我将SDK从1.9.1更新到1.10.0,这个问题神秘地消失了。

糟透了我浪费了〜4天试图解决它,但......继续前进。

更改日志中的任何内容似乎都与我的问题无关。

V1.10.0 - 2015年11月19日

NEW

删除了PFObject可变容器跟踪。 为PFUser登录/链接方法添加了泛型类型。 在PFInstallation的channels属性中添加了泛型类型。 为PFPush.getSubscribedChannels ...方法添加了泛型类型。 将PFUser的isAuthenticated方法转换为属性。 转换了PFFile的isDataAvailable,isDirty方法属性。 将PFObject的isDataAvailable,isDirty,allKeys方法转换为属性。 将PFACL的publicReadAccess和publicWriteAccess方法转换为属性。 改进

暂存的PFFiles现在存储在缓存目录中。 用通用宏替换所有可空性注释。 使所有访问sqlite线程安全,以减轻潜在的崩溃。 PFPurchase.buyProduct()不再需要非零完成块。 删除了对支持注释的类型的nullability说明符的使用。 改进了所有本地文件的持久性逻辑,为tvOS / watchOS发布做准备。 添加额外的安全防护装置,以减少通过PFP购买产品时可能发生的崩溃。 现在,跨架构以一致的顺序生成用于查询结果缓存的键。 固定

修复了尝试getData /保存PFFile而没有任何本地数据时发生崩溃的问题。 修复了PFUser.linkWithAuthType()失败将错误信息保存到磁盘的问题。