Swift で評価アプリを作成しています。ここでは、画像の平均投票数、合計投票数、現在の投票数を Parse に保存しています。objectId を持たずに行を更新したい。
約 1000 枚の画像があることを考えると、各画像に objectId を与えて、その画像が投票されるたびに Parse をクエリするのは少し多すぎるように思えます。
var userData = PFObject(className:"UserData")
userData.setObject(0, forKey: "imageNumber")
userData.setObject(0, forKey: "totalVotes")
userData.setObject(0, forKey: "Average")
userData.saveInBackground()
ユーザーが IBAction をタップして画像 (1-10) に投票するためにタップするたびに、1) 投票の総数、2) この最新の投票からの新しい平均、および 3) を増やして解析を更新したいこれを表示するようにユーザー インターフェイスを更新します。
今のところ、これは私が運が悪かったことです。これはバグが多く、機能しません。投稿された他の質問や Parse ドキュメントに基づいています。
これは私が今持っているものです:
@IBAction func one(sender: UIButton) {
//This is "one" vote. There are 9 more IBActions that do the exact same thing
//Here is where I would update the labels on the UI
// I would also have a function that is triggered to update parse based on this increment to the total # of votes and the average.
// This would also update the UI based on the votes received, querying the data from Parse.
}
func updateParse() {
var randNumber = Int32()
counter = 0
counter++
var query = PFQuery(className:"UserData")
query.countObjectsInBackgroundWithBlock {
(count: Int, error: NSError!) -> Void in
if error == nil {
randNumber = arc4random_uniform(count)
query2.whereKey("ImageNumber", equalTo:randNumber)
query2.getFirstObjectInBackgroundWithBlock {
(userData: PFObject!, error: NSError!) -> Void in
if error != nil {
println(error)
} else {
let votes = userData["totalVotes"] as Int
}
}
}
}
}
画像番号に一致する番号を見つけようとしているので、ユーザーがいる画像に基づいて、ユーザーが投票をタップすると、IBaction が関数をトリガーし、画像が Parse と一致する objectID を探します。
行だけを更新する方法がわからないため、Parse にクエリを実行して画像を更新するのに問題があります。
何か案は?どうもありがとう...
PS、
質問からのフィードバックのおかげで、物事をもう少し明確にするために:
100000 個の objectId は必要ありません。ユーザーが特定の画像を使用しているときに、それぞれの行を更新するだけです。
例: ユーザーが image783 にいて、その画像に投票し、その画像に評価として「7」を付けた場合、解析時に image783 の「totalVotes」のその行に「7」を追加して、この画像が現在持っているようにします。平均/合計に7の追加投票が追加され、最終的にその画像の合計平均と画像が受け取った合計投票に影響します(Xcodeファイルで平均を計算します)。投票の合計数とすべてのユーザーからの平均投票は、Parse からクエリを実行することにより、最終的に UI に表示されます。