Swift - 通过 UISearchController [解析] 搜索时关注和取消关注用户的问题

Posted

技术标签:

【中文标题】Swift - 通过 UISearchController [解析] 搜索时关注和取消关注用户的问题【英文标题】:Swift - Problems following & unfollowing users when searched via UISearchController [Parse] 【发布时间】:2015-12-04 13:16:49 【问题描述】:

下午好,

今天我遇到了一些解析问题。

我创建了一个 UISearchController,从解析中加载了我的用户,以便我可以搜索单个用户,并且我添加了一个关注和取消关注功能。

我的问题是当我搜索特定用户并尝试关注他时:所以我搜索特定用户说“测试”它应该显示,但是当我点击关注然后返回解析查看如果“我”遵循了测试,我可以得到不同的结果。

它说我已经关注了例如“tester”,它是第一个创建的用户。它似乎跟随 Cell,现在跟随 userId...

之后我设法按字母顺序获取用户,但这里的问题相同,只是它按照字母顺序跟随第一个用户,例如,如果我有一个以“A”开头的用户名!

我不知道如何解决这个问题,所以我希望这里有人能解决..我接受并感谢所有类型的提示和答案!

【问题讨论】:

【参考方案1】:

您需要检查UISearchController 是否在didSelectRowAtIndexPath 中处于活动状态。现在您只能从 users 数组中进行选择,而不是从 searchResults 数组中进行选择。

我还强烈建议重构您的代码,避免使用 objectIds 并使用指针。查询和使用指针比直接访问它们的 objectId 更容易。

Here's a link 回答我之前回答过的另一个问题,我在其中给出了一个完整的示例,说明使用 UISearchController 在 Parse 中按用户名进行搜索。希望对您有所帮助!

【讨论】:

您好,感谢您的回复,我以前看过您的帖子,觉得很有帮助!我已经用我写的另一段代码更新了代码,这给了我同样的错误......当我选择一个时,它确实遵循正确的用户...... 我猜这可能是数据类型的问题。您的followers 类的follower 字段是指针吗?如果是这样,您应该为其分配 User 对象,而不是 objectId 属性。 following["follower"] = PFUser.currentUser()! 而不是 following["follower"] = PFUser.currentUser()!.objectId。如前所述,您不应在任何查询或保存中直接引用 objectId。 这绝对是您所需要的。看看 Parse Anypic 示例项目。特别是,您想了解Activity 类是如何使用fromUsertoUser 等指针实现的。 Anypic 是一个完整应用程序的绝佳示例,绝对值得花一些时间深入研究。 parse.com/tutorials/anypic 不用担心,您将不得不更改相当数量。您将需要一个 PFUser 数组,而不是为 objectIds 使用 String 数组。同样,您将添加 PFUser 对象本身,而不是直接向其中添加 objectIds。查询时,不是说whereKey("follower", equalTo: PFUser.currentUser()!.objectId!),而是whereKey("follower", equalTo: PFUser.currentUser()!)。该错误看起来就像上面的一个被忽略了,因为它有一个 String 但需要一个 PFUser 指针。没有看到更新的代码很难说还有什么 如果您使用的是 Swift2,您应该将 (objects: [AnyObject]?, error: NSError?) -> Void 更改为 (objects: [PFUser]?, error: NSError?) -> Void。从那里,您将得到空单元格,因为 cellForRowAtIndexPath 没有完全实现。您应该能够从返回的PFUser 数据中很好地访问数据。类似let userObject = users[indexPath.row]Cell.textlabel?.text = userObject["username"]。也不要忘记在有帮助时为答案/帖子投票:)

以上是关于Swift - 通过 UISearchController [解析] 搜索时关注和取消关注用户的问题的主要内容,如果未能解决你的问题,请参考以下文章

swift Swift - CloudKit - 通过模拟器访问iCloud

Swift:通过引用传递数组?

“当前 SwiftyJSON(通过 Swift 3.0.2)无法使用 Swift 3.1 导入”的原因是啥

如何通过 Swift 扩展实现委托方法

Swift:通过 UIView 识别滚动

通过 try 块处理 Swift 2.2 错误