所有用户都可以访问和更改的最有效的数据存储方式
Most efficient way of storing data which can be accessed and changed by all users
我目前正在学习 Swift 和 Parse,对于我要问的问题,我将对单元格使用简单的赞成票。
所以我有一个 table 视图控制器,它由对 Parse 上的 table 的查询填充。为此,我在相关 table 上创建了一个查询,然后将信息位存储到数组中,例如用户名、文本帖子和对象 ID 的数组:
var postGrabber: [PFObject] = [PFObject]()
var pSenderUsername: [String] = [String]()
var pPostBody: [String] = [String]()
var objectId: [String] = [String]()
然后我可以使用单元格的索引路径从上面的数组中获取相关信息。
每个单元格还有一个 UIButton(用于投票以及其他信息)。
要获取已单击哪个单元格的 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 table 的分数属性的最有效方法。
查看 Parse 文档后,我可能会使用计数器变量来保存分数或数组。
不过,我认为在多个用户试图在任何给定时间访问数据的情况下,使用计数器是否可能存在同步问题。 (不确定)
是否有人可以分享他们执行此类任务的方式,以便在任何给定时间只能由 1 个用户访问 Parse 中的数据,以避免此类问题。
所以你想增加 numberOfUpVotes
。
您可以使用
[post incrementKey:@"numberOfUpVotes"];
[post saveInBackground];
这将异步更新选票,incrementKey
方法是原子的。假设我们有 5 个用户同时单击 "up" 按钮,键 "numberOfUpVotes" 的值将是 5 而不是 1。
此外,您可以通过以下方式指定增量金额:
[post incrementKey:@"numberOfUpVotes" byAmount:[NSNumber numberWithInt:2]]
但我认为这不会发生在您的用例中:)
您可以从 Parse 中阅读此 post:
https://parse.com/questions/concurrency-management-in-parse
或者你可以看到我的问题:
note: my code is in Objective-C, but it's pretty easy to convert that
into Swift.
我目前正在学习 Swift 和 Parse,对于我要问的问题,我将对单元格使用简单的赞成票。
所以我有一个 table 视图控制器,它由对 Parse 上的 table 的查询填充。为此,我在相关 table 上创建了一个查询,然后将信息位存储到数组中,例如用户名、文本帖子和对象 ID 的数组:
var postGrabber: [PFObject] = [PFObject]()
var pSenderUsername: [String] = [String]()
var pPostBody: [String] = [String]()
var objectId: [String] = [String]()
然后我可以使用单元格的索引路径从上面的数组中获取相关信息。
每个单元格还有一个 UIButton(用于投票以及其他信息)。
要获取已单击哪个单元格的 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 table 的分数属性的最有效方法。
查看 Parse 文档后,我可能会使用计数器变量来保存分数或数组。
不过,我认为在多个用户试图在任何给定时间访问数据的情况下,使用计数器是否可能存在同步问题。 (不确定)
是否有人可以分享他们执行此类任务的方式,以便在任何给定时间只能由 1 个用户访问 Parse 中的数据,以避免此类问题。
所以你想增加 numberOfUpVotes
。
您可以使用
[post incrementKey:@"numberOfUpVotes"];
[post saveInBackground];
这将异步更新选票,incrementKey
方法是原子的。假设我们有 5 个用户同时单击 "up" 按钮,键 "numberOfUpVotes" 的值将是 5 而不是 1。
此外,您可以通过以下方式指定增量金额:
[post incrementKey:@"numberOfUpVotes" byAmount:[NSNumber numberWithInt:2]]
但我认为这不会发生在您的用例中:)
您可以从 Parse 中阅读此 post:
https://parse.com/questions/concurrency-management-in-parse
或者你可以看到我的问题:
note: my code is in Objective-C, but it's pretty easy to convert that into Swift.