ユーザーが投票できる、Swiftで一種のホットまたはノットスタイルのアプリを構築しています:それぞれ、画像に対してHOT、NOT、MAYBEです。
ユーザーが画像に到達するたびに投票し、それぞれの投票ごとに IBAction がクエリをトリガーし、以下のコードに示すように、Parse からの合計投票数と合計ホット数の結果を表示します。
1,000枚の画像を予定しています。
それぞれの画像に対応するすべての objectID をプリロードして、ユーザーが画像に投票したときに、データが既にプリロードされているか、解析からクエリされているか? どうすればそれについて行くでしょうか?
今のところ、1000 の異なる画像から 1000 のクエリを取得する各 ObjectID のクエリを作成しています...明らかにスケーラブルではありません。
swipePosition 変数は、ユーザーがどの画像を表示しているかをカウントする単なるカウンターです。保存されている画像は、現在 Xcode に保存されている配列にあります。Parse に保存されている場合は、プリロードすることもできますか?
(「hotButtonQuery」関数のみを表示していますが、Not と Maybe の buttonQuery 関数もあります...)
スケーラブルになるようにこのコードを単純化する方法はありますか? 今のところ、25枚を超える画像を拡大縮小する方法はありません...
どうもありがとう!
func hotButtonQuery() {
if swipePosition == 0 {
var query = PFQuery(className:"UserData")
query.getObjectInBackgroundWithId("RlvK3GhfqE") {
(userData: PFObject!, error: NSError!) -> Void in
if error != nil {
println(error)
}
else {
userData.incrementKey("totalVotes", byAmount: 1)
userData.incrementKey("hot", byAmount: 1)
var updateTotalVotesUILabel = userData.objectForKey("totalVotes") as NSInteger
var updateHotsUILabel = userData.objectForKey("hot") as NSInteger
userData.saveInBackground()
println("parse was updated!")
self.totalVotesLabel.text = String(updateTotalVotesUILabel)
self.totalHotsLabel.text = String(updateHotsUILabel)
}
}
} else if swipePosition == 1 {
var query = PFQuery(className:"UserData")
query.getObjectInBackgroundWithId("30WlVtgurP") {
(userData: PFObject!, error: NSError!) -> Void in
if error != nil {
println(error)
}
else {
userData.incrementKey("totalVotes", byAmount: 1)
userData.incrementKey("hot", byAmount: 1)
var updateTotalVotesUILabel = userData.objectForKey("totalVotes") as NSInteger
var updateHotsUILabel = userData.objectForKey("hot") as NSInteger
//println(userData.objectForKey("totalVotes"))
//println("total HOTs:")
//println(userData.objectForKey("hot"))
userData.saveInBackground()
println("parse was updated!")
self.totalVotesLabel.text = String(updateTotalVotesUILabel)
self.totalHotsLabel.text = String(updateHotsUILabel)
}
}
} else if swipePosition == 3 {
var query = PFQuery(className:"UserData")
query.getObjectInBackgroundWithId("5D6ARjk3xS") {
(userData: PFObject!, error: NSError!) -> Void in
if error != nil {
println(error)
}
else {
userData.incrementKey("totalVotes", byAmount: 1)
userData.incrementKey("hot", byAmount: 1)
var updateTotalVotesUILabel = userData.objectForKey("totalVotes") as NSInteger
var updateHotsUILabel = userData.objectForKey("hot") as NSInteger
//println(userData.objectForKey("totalVotes"))
//println("total HOTs:")
//println(userData.objectForKey("hot"))
userData.saveInBackground()
println("parse was updated!")
self.totalVotesLabel.text = String(updateTotalVotesUILabel)
self.totalHotsLabel.text = String(updateHotsUILabel)
}
}
}