• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 所有用户都可以访问和更改的最有效的数据存储方式

[复制链接]
菜鸟教程小白 发表于 2022-12-11 17:49:58 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我目前正在学习 Swift 和 Parse,对于我要问的问题,我将对单元格进行简单的投票。

所以我有一个 TableView Controller ,它通过查询 Parse 上的表来填充。为此,我在相关表上创建一个查询,然后将信息位存储到数组中,例如用户名、文本帖子和对象 ID 的数组:

var postGrabber: [PFObject] = [PFObject]()
var pSenderUsername: [String] = [String]()
var pPostBody: [String] = [String]()
var objectId: [String] = [String]()

然后我可以使用单元格的 indexPath 从上面的数组中获取相关信息。

每个单元格还有一个 UIButton(用于投票和其他信息)。

Like so...

要获取点击了哪个单元格的 indexPath,我使用:

    let btnPos: CGPoint = sender.convert(CGPoint.zero, to: self.tableView)
    let indexPath = self.tableView.indexPathForRow(at: btnPos)!
    let rowToAction = indexPath.first!

As a side note, objectAtIndexPath(rowToAction) does not seem to work in Swift 3, does anyone know of an alternative?

从这一点来看,我有点不确定更新 Parse 表的 score 属性的最有效方法。

查看 Parse 文档后,我可能会使用计数器变量来保存分数或数组。

不过,我认为在多个用户试图在任何给定时间访问数据的情况下,使用计数器是否可能存在同步问题。 (不确定)

是否有可能有人可以分享他们执行此类任务的方式,以便在任何给定时间只能由 1 个用户访问 Parse 中的数据,以避免此类问题。



Best Answer-推荐答案


所以你想增加 numberOfUpVotes

你可以使用

[post incrementKey"numberOfUpVotes"];
[post saveInBackground];

这将异步更新投票,并且 incrementKey 方法是原子的。假设我们有 5 个用户同时点击“向上”按钮,则键“numberOfUpVotes”的值将是 5 而不是 1。

此外,您可以通过以下方式指定增量金额:

[post incrementKey"numberOfUpVotes" byAmount:[NSNumber numberWithInt:2]]

但我认为这不会在您的用例中发生

您可以从 Parse 阅读这篇文章:

https://parse.com/questions/concurrency-management-in-parse

或者你可以看看我的问题:

iOS Parse.com updating objects

note: my code is in Objective-C, but it's pretty easy to convert that into Swift.

关于ios - 所有用户都可以访问和更改的最有效的数据存储方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40023328/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap