Here is the object we will work with.
This is a table in SQL and called a "class" in Parse.
FROM COMMENT
query.findObjectsInBackgroundWithBlock {...}
FROM COMMENT
ORDER BY
updatedAt,
member,
createAt DESC,
objectId DESC
query.selectKeys(["member", "text"])
query.orderByAscending("updatedAt")
query.addAscendingOrder("member")
query.orderByDescending("createdAt")
query.addDescendingOrder("objectId")
query.findObjectsInBackgroundWithBlock {...}
FROM COMMENT
WHERE objectId = "VZ9cibW0Oe"
query.selectKeys(["member", "text"])
query.limit = 10 // Default: 100, Valid Values: 1 - 1000
query.whereKey("objectId", equalTo: "VZ9cibW0Oe")
query.findObjectsInBackgroundWithBlock {...}
FROM COMMENT
WHERE
createdAt < "2015-08-08"
OR
createdAt > "2015-08-10"
lessThanDate.whereKey("createdAt", lessThan: "2015-08-08")
var greaterThanDate = PFQuery(className:"COMMENT")
greaterThanDate.whereKey("createdAt", greaterThan: "2015-08-10")
var query = PFQuery.orQueryWithSubqueries([lessThanDate, greaterThanDate])
query.findObjectsInBackgroundWithBlock {...}
FROM COMMENT
WHERE
createdAt > "2015-08-08"
AND
createdAt < "2015-08-09"
AND
text IS NOT NULL
query.whereKey("createdAt", greaterThan: "2015-08-08")
query.whereKey("createdAt", lessThan: "2015-08-09")
query.whereKeyExists("text")
query.findObjectsInBackgroundWithBlock {...}
SELECT TOP 1 *
FROM COMMENT
query.getFirstObjectInBackgroundWithBlock {...}
// Alternative (Does not happen in background):
if let row: PFObject = query.getFirstObject() {
// A result was returned.
}
FROM COMMENT
WHERE member = "VZ9cibW0Oe"
query.whereKey("member", equalTo: "VZ9cibW0Oe")
query.countObjectsInBackgroundWithBlock {
(count: Int, error: NSError?) -> Void in
if error == nil {
println("Member commented \(count) times.")
}
}
SELECT
MEMBER.realname,
COMMENT.text
FROM
COMMENT
INNER JOIN MEMBER ON COMMENT.member = MEMBER.objectId
WHERE
query.selectKeys(["member", "text"]) // Note, you cannot access fields from the MEMBER table in the selectKeys, just fields from COMMENT.
// includeKey Tips
// Include the whole MEMBER row/object.
// This is the field name from COMMENT, not the table name.
// You must also make sure the field you are using "includeKey" is also in the "selectKeys" array.
query.includeKey("member")
query.whereKey("objectId", equalTo: "ogm7EIAiY9")
query.findObjectsInBackgroundWithBlock {
(rows: [AnyObject]?, error: NSError?) -> Void in
if error == nil {
if let rows = rows as? [PFObject] {
for row in rows {
let text = row["text"] as! String
if let member = row["member"] as? PFObject {
let username = member["username"] as! String
}
}
}
} else {
println(error)
}
}
SELECT
MEMBER.realname,
COMMENT.text
FROM
COMMENT
INNER JOIN MEMBER ON COMMENT.member = MEMBER.objectId
WHERE
memberQuery.whereKeyDoesNotExist("deletedAt") // IS NULL
var commentQuery = PFQuery(className:"COMMENT")
commentQuery.selectKeys(["member", "text"])
commentQuery.includeKey("member")
commentQuery.whereKeyExists("text") // IS NOT NULL
// The first param is the field from COMMENT that represents the MEMBER object.
commentQuery.whereKey("member", matchesQuery: memberQuery)
commentQuery.findObjectsInBackgroundWithBlock {
(rows: [AnyObject]?, error: NSError?) -> Void in
if error == nil {
if let rows = rows as? [PFObject] {
for row in rows {
let text = row["text"] as! String
if let member = row["member"] as? PFObject {
let username = member["realname"] as! String
}
}
}
} else {
println(error)
}
}
For more info on doing queries in Parse, go here.
COMMENT | |||||
| objectId | member | text | createdAt | updatedAt | ACL |
| VZ9cibW0Oe | rAtRskgtyp | Nicely done! | 2015-08-07T04:46:43.738Z | 2015-08-07T04:46:43.738Z | Public Read, rAtRskgtyp |
| ay9bvW2b1U | uYZKeAGinV | Good job. | 2015-08-08T14:15:59.571Z | 2015-08-08T14:15:59.571Z | Public Read, uYZKeAGinV |
| ogm7EIAiY9 | vRtVykXTFn | Needs more work. | 2015-08-10T15:05:53.314Z | 2015-08-10T15:05:53.314Z | Public Read, vRtVykXTFn |
This is a table in SQL and called a "class" in Parse.
Note
In all of the Parse queries below assume this code replaces the ellipses (...). Because it doesn't change that much I don't want to keep repeating it:
(rows: [AnyObject]?, error: NSError?) -> Void in
if error == nil {
if let rows = rows as? [PFObject] {
for row in rows {
println(row)
}
}
} else {
println(error)
}
SELECT * if error == nil {
if let rows = rows as? [PFObject] {
for row in rows {
println(row)
}
}
} else {
println(error)
}
Constraints
SQL
FROM COMMENT
PARSE - SWIFT
var query = PFQuery(className:"COMMENT")query.findObjectsInBackgroundWithBlock {...}
SQL - ORDER BY
SELECT member, textFROM COMMENT
ORDER BY
updatedAt,
member,
createAt DESC,
objectId DESC
PARSE - SWIFT
var query = PFQuery(className:"COMMENT")query.selectKeys(["member", "text"])
query.orderByAscending("updatedAt")
query.addAscendingOrder("member")
query.orderByDescending("createdAt")
query.addDescendingOrder("objectId")
query.findObjectsInBackgroundWithBlock {...}
SQL - TOP, WHERE
SELECT TOP 10 member, textFROM COMMENT
WHERE objectId = "VZ9cibW0Oe"
PARSE - SWIFT
var query = PFQuery(className:"COMMENT")query.selectKeys(["member", "text"])
query.limit = 10 // Default: 100, Valid Values: 1 - 1000
query.whereKey("objectId", equalTo: "VZ9cibW0Oe")
query.findObjectsInBackgroundWithBlock {...}
SQL - WHERE, OR
SELECT *FROM COMMENT
WHERE
createdAt < "2015-08-08"
OR
createdAt > "2015-08-10"
PARSE - SWIFT
var lessThanDate = PFQuery(className:"COMMENT")lessThanDate.whereKey("createdAt", lessThan: "2015-08-08")
var greaterThanDate = PFQuery(className:"COMMENT")
greaterThanDate.whereKey("createdAt", greaterThan: "2015-08-10")
var query = PFQuery.orQueryWithSubqueries([lessThanDate, greaterThanDate])
query.findObjectsInBackgroundWithBlock {...}
SQL - WHERE, AND
SELECT *FROM COMMENT
WHERE
createdAt > "2015-08-08"
AND
createdAt < "2015-08-09"
AND
text IS NOT NULL
PARSE - SWIFT
var query = PFQuery(className:"COMMENT")query.whereKey("createdAt", greaterThan: "2015-08-08")
query.whereKey("createdAt", lessThan: "2015-08-09")
query.whereKeyExists("text")
query.findObjectsInBackgroundWithBlock {...}
Query Execution
These are the different ways you can execute a query besides using findObjectsInBackgroundWithBlock.
SQL - TOP 1
FROM COMMENT
PARSE - SWIFT
var query = PFQuery(className:"COMMENT")query.getFirstObjectInBackgroundWithBlock {...}
// Alternative (Does not happen in background):
if let row: PFObject = query.getFirstObject() {
// A result was returned.
}
SQL - COUNT
SELECT COUNT(member)FROM COMMENT
WHERE member = "VZ9cibW0Oe"
PARSE - SWIFT
var query = PFQuery(className:"COMMENT")query.whereKey("member", equalTo: "VZ9cibW0Oe")
query.countObjectsInBackgroundWithBlock {
(count: Int, error: NSError?) -> Void in
if error == nil {
println("Member commented \(count) times.")
}
}
Multiple Tables
Let's step things up by showing you how to query data from multiple tables. Parse doesn't have JOINs so how you approach your solution might look a little different.
Let's include the Member table/class now.
Let's include the Member table/class now.
MEMBER | ||||||
| objectId | realname | username | deletedAt | createdAt | updatedAt | ACL |
| VZ9cibW0Oe | John Doe | JohnDoe | 2015-08-07T04:46:43.738Z | 2015-08-07T04:46:43.738Z | Public Read, VZ9cibW0Oe | |
| ay9bvW2b1U | Jane Smith | JaneSmith | 2015-09-01T10:15:14.571Z | 2015-08-08T14:15:59.571Z | 2015-08-08T14:15:59.571Z | Public Read, ay9bvW2b1U |
| ogm7EIAiY9 | Bill Ford | BillFord | 2015-08-10T15:05:53.314Z | 2015-08-08T15:05:53.314Z | Public Read, ogm7EIAiY9 | |
SQL - INNER JOIN, WHERE FROM ONE TABLE
MEMBER.realname,
COMMENT.text
FROM
COMMENT
INNER JOIN MEMBER ON COMMENT.member = MEMBER.objectId
WHERE
COMMENT.objectId = "ogm7EIAiY9"
PARSE - SWIFT
var query = PFQuery(className:"COMMENT")query.selectKeys(["member", "text"]) // Note, you cannot access fields from the MEMBER table in the selectKeys, just fields from COMMENT.
// includeKey Tips
// Include the whole MEMBER row/object.
// This is the field name from COMMENT, not the table name.
// You must also make sure the field you are using "includeKey" is also in the "selectKeys" array.
query.includeKey("member")
query.whereKey("objectId", equalTo: "ogm7EIAiY9")
query.findObjectsInBackgroundWithBlock {
(rows: [AnyObject]?, error: NSError?) -> Void in
if error == nil {
if let rows = rows as? [PFObject] {
for row in rows {
let text = row["text"] as! String
if let member = row["member"] as? PFObject {
let username = member["username"] as! String
}
}
}
} else {
println(error)
}
}
SQL - INNER JOIN, WHERE FROM TWO TABLES, IS [NOT] NULL
MEMBER.realname,
COMMENT.text
FROM
COMMENT
INNER JOIN MEMBER ON COMMENT.member = MEMBER.objectId
WHERE
COMMENT.text IS NOT NULL
AND
MEMBER.deletedAt IS NULL
AND
MEMBER.deletedAt IS NULL
PARSE - SWIFT
var memberQuery = PFQuery(className:"MEMBER")memberQuery.whereKeyDoesNotExist("deletedAt") // IS NULL
var commentQuery = PFQuery(className:"COMMENT")
commentQuery.selectKeys(["member", "text"])
commentQuery.includeKey("member")
commentQuery.whereKeyExists("text") // IS NOT NULL
// The first param is the field from COMMENT that represents the MEMBER object.
commentQuery.whereKey("member", matchesQuery: memberQuery)
commentQuery.findObjectsInBackgroundWithBlock {
(rows: [AnyObject]?, error: NSError?) -> Void in
if error == nil {
if let rows = rows as? [PFObject] {
for row in rows {
let text = row["text"] as! String
if let member = row["member"] as? PFObject {
let username = member["realname"] as! String
}
}
}
} else {
println(error)
}
}
For more info on doing queries in Parse, go here.
Great article - Check this out!
ReplyDeletewww.ABestPro.com
Best cheap track jackets
Best track jacket mens
Best adidas track jacket mens
Best womens track jacket
Best training jacket mens
Best track jacket nike
Best vintage track jacket
Best gold track jacket
Great article - Check this out!
www.ABestPro.com
Best lightweight running jacket mens
Best mens running rain jacket
Best running jacket mens
Best lightweight waterproof running jacket
Best running windbreaker womens
Best winter running jacket mens
Best lightweight running jackets
Best winter running jacket men