- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我想检查 Parse 中的一个类并检查以下内容:
var query = PFQuery(className:"Score")
query.whereKey("playerName", equalTo:"Bob")
query.whereKey("opponent", equalTo:"Jim")
query.findObjectsInBackgroundWithBlock {
(objects, error) -> Void in
if error == nil {
if let objects = objects as? [PFObject] {
for object in objects {
// if there is a match, update the record
object["wins"] = 5
}
} //else if there is no match on the whereKey, append the record to "Score" class.
} else {
// Log details of the failure
println("Error: \(error!) \(error!.userInfo!)")
}
}
有一个基本功能的小示例代码。如果找到匹配项,我想更新,但如果不存在,则插入它。我正在尝试这样的事情:
query.findObjectsInBackgroundWithBlock({ (objects, error) -> Void in
if error == nil {
if let objects = objects as? [PFObject] {
if objects == [] {
//println(objects)
}
for object in objects {
它没有找到对象,但我不知道如何检测它。必须有一个简单的方法来做到这一点,有人知道吗?
谢谢!
最佳答案
如果将功能分解为逻辑单元,则可以直接实现您正在做的事情。认识到每个程序都是异步运行的,为每个程序提供一个看起来像(也许完全一样)解析 SDK block 的完成 block ...
在您的情况下,您想要找到一个对象,如果它不存在则创建它,并以任何一种方式更新和保存它。我会做类似下面的事情。 (请注意,我写得并不快,并且在这里学到的知识仅足以理解更大的想法):
// record that player named playerName won against opponent named opponent
func playerBeatOpponent(playerName: String, opponent: String, completion: (success: Bool, error: NSError?) -> Void) {
self.findOrCreateScore(playerName, opponent: opponent, completion: { (scoreObject: PFObject?, error: NSError?) -> Void in
if let scoreObject = scoreObject {
let wins = scoreObject["wins"] as! Int
scoreObject["wins"] = wins + 1
scoreObject.saveInBackgroundWithBlock(completion)
}
})
}
// answer a Score object recording a win between playerName and opponent
// find and return it if it exists, or create it if it doesn't exist
func findOrCreateScore(playerName: String, opponent: String, completion: (scoreObject: PFObject?, error: NSError?) -> Void) {
self.findScore(playerName, opponent: opponent, completion: { (scoreObject: PFObject?, error: NSError?) -> Void in
if scoreObject == nil {
self.createScore(playerName, opponent: opponent, completion: completion)
} else {
completion(scoreObject: scoreObject, error: nil)
}
})
}
// find a score matching the criteria given
func findScore(playerName: String, opponent: String, completion: (scoreObject: PFObject?, error: NSError?) -> Void) {
var query = PFQuery(className:"Score")
query.whereKey("playerName", equalTo:playerName)
query.whereKey("opponent", equalTo:opponent)
query.findObjectsInBackgroundWithBlock { (objects: [AnyObject]?, error: NSError?) -> Void in
if error == nil {
if let object: AnyObject = objects?[0] {
completion(scoreObject:object as? PFObject, error: nil)
} else {
completion(scoreObject:nil, error: nil)
}
} else {
completion(scoreObject:nil, error: error)
}
}
}
// create a new score object with the given params
func createScore(playerName: String, opponent: String, completion: (scoreObject: PFObject?, error: NSError?) -> Void) {
var scoreObject = PFObject(className:"Score")
scoreObject["playerName"] = playerName
scoreObject["oponent"] = opponent
scoreObject["wins"] = 1
scoreObject.saveInBackgroundWithBlock { (success: Bool, error: NSError?) -> Void in
if (success) {
completion(scoreObject: scoreObject, error: nil)
} else {
completion(scoreObject: nil, error: error)
}
}
}
关于ios - Swift 中根据 whereKey 解析查询更新或追加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32280320/
这是我的代码: func loadData() { data.removeAllObjects() isLiking.removeAll(keepCapacity: true)
我正在尝试选取等于特定日期并匹配特定值的所有对象,但我不确定如何做到这一点。我需要获取日期包含 10 或更高的对象,因此在本例中它将拾取该对象,因为其中一个或两个的数字大于 10。 这是“数字”列,其
var limitlocation = 5 as Double if let usergeo = currentuser.objectForKey("location") as? PFGeoPoint
我有一个解析对象,已保存到 LDS,我想通过 1 个键和另一个键下的条目来搜索它。 关键:这很好。 checkQuery.whereKeyExists("File-rZVgZNpNuB") 包含的 k
我正在尝试创建一个查询,在其中可以检查指向的对象的值是否满足特定要求。示例我有一个名为 rooms 的类,每个 room 对象都有一个指向 post 对象的指针。我想在获取房间时检查帖子对象的 whe
Xcode 7 beta 4 我有来自 Parse.com 的 Poem 类。在我的 Parse User 类中,我有列 likedPoem ,它与类 Poem 相关 我的 Poem 类中只有一条记录
所以我想检查 Parse 中的一个类并检查以下内容: var query = PFQuery(className:"Score") query.whereKey("playerName", equal
我有一个名为“Question”的 Parse 类和一个名为“quizid”的 Number 类型的列。 在 xcode swift 类中,我有一个类型为 Int quiz_id 的变量。 我有一个继
在用户删除表格单元格后,我尝试删除 Parse 中的数据源。它工作得很好,因为我测试了不同的 .whereKey 方法,但我似乎无法弄清楚使用哪一个来找到实际删除的对象。我当前在下面列出的内容返回错误
我在 Parse 中有一个名为 GarageSale 的类,它有一个名为 User 的指针列。我正在尝试访问User对象的房屋地址列。 这是我在代码中尝试执行的操作: let radius = PFU
我有一个名为 Book 的 Parse 类。其中有一列 pageNumber。 我想查询每个页码的最新对象。可以有多个对象具有相同的 pageNumber,这就是为什么我只想查询 pageNumber
在我的 PFUser 类中,每个用户都有一个名为 twitterId 的 key ,其中包含他们的推特 ID。在我从 Twitter 获得 currentUser 的好友列表后,我无法通过 Parse
我有一个 tableView,我正在其中从 Parse 加载我的数据。现在我想使用 parse 来显示来自 searchBar.text 的搜索结果。我有名字和姓氏,我都想在其中搜索。问题是我不知道如
目前,我有一个Game 类表,其中包含一个名为currentTurnPlayer 的属性。对于查询,我有兴趣获取所有 game 对象,其中 currentTurnPlayer 的名称不等于我的 sel
在 Parse 的“Message”表中,我有一个名为 conversation 的字段,它是一个指向 Conversation 的指针(另一个表我的数据库)。 要查询消息,我可以这样做吗:
有没有一种简单的方法可以删除满足特定条件(例如“UserID”=用户)的特定类(即消息)中的所有对象,以便我的消息类中与特定用户关联的所有行都将被删除? 最佳答案 试试这个, PFQuery *qu
我知道使用 parse 有一个 PFQuery 限制,您一次只能检索 1000 个对象。我认为它不会,但这是否也限制了可以执行的 whereKey 比较的数量。例如 var query = PFQue
是否可以在包含对象键的 PFQuery 上运行 whereKey?假设我想获取所有当前分数高于之前分数的用户?像这样: query.whereKey("score", greaterThan: ?pr
我在 Friendship 类中使用 fromUser 和 toUser 键对用户友谊进行排序。当我只想返回与 currentUser 没有友谊的用户时,我想使用两个 whereKey:doesNot
我正在使用 swift 在 Xcode 中创建一个应用程序,它从解析服务器数据库(由 Heroku 托管)中提取信息。有一个方便的修改查询的方法,可以这样设置,例如: let getFollowedU
我是一名优秀的程序员,十分优秀!