Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 解析:检索最后一个对象_Ios_Swift_Parse Platform - Fatal编程技术网

Ios 解析:检索最后一个对象

Ios 解析:检索最后一个对象,ios,swift,parse-platform,Ios,Swift,Parse Platform,我试图通过描述字段“createdAt”检索选择顺序的最后一个对象: 在SQL中,类似以下内容: SELECT * FROM Message ORDER BY createdAt DESC LIMIT 1 我试过这个,但不起作用。结果是第一个对象: let query = PFQuery(className: "Message") query.orderByDescending("createdAt") query.limit = 1 var lastMessage = "..."

我试图通过描述字段“createdAt”检索选择顺序的最后一个对象: 在SQL中,类似以下内容:

SELECT *   
FROM Message
ORDER BY createdAt DESC
LIMIT 1
我试过这个,但不起作用。结果是第一个对象:

let query = PFQuery(className: "Message")

query.orderByDescending("createdAt")
query.limit = 1

var lastMessage = "..."

if let objects = query.findObjects() as [AnyObject]?
{
    for object in objects
    {
        //Execute one time only and don't return the row that i want
        lastMessage = object["Text"] as! String
    }
}
通过这段惰性代码,我得到了我想要的,但我必须按所有对象循环:

let query = PFQuery(className: "Message")

var lastMessage = "..."

if let objects = query.findObjects() as [AnyObject]?
{
    for object in objects
    {
        //Execute many times and return the row that i want int the last
        lastMessage = object["Text"] as! Strin
    }
}

不惜一切代价避免使用同步调用,如
findObjects()
。相反,请尝试使用
findobjectsinbackgroundithblock

let query = PFQuery(className: "Message")
query.orderByDescending("createdAt")
query.limit = 1
query.findObjectsInBackgroundWithBlock { (objects: [AnyObject]?, error: NSError?) -> Void in
    if (error == nil) {
        if let firstObject = objects?.first {
            lastMessage = firstObject["Text"] as! String
        }
    } else {        
        // Log details of the failure
        println("query error: \(error) \(error!.userInfo!)")
    }
}

但是如果需要同步数据,则需要在后台执行所有查询,以便它们不会出现在主线程上。除此之外,主线程控制应用程序的UI,如果您通过执行长时间运行的同步操作(如查询)来阻止主线程,则在查询完成之前,UI将无响应。如果需要使用Parse中的数据更新UI,您可以在completion块中处理所有这些。如果您有其他需要同步操作的逻辑,请使用
NSNotifications
来构造流
let query = PFQuery(className: "Message")
query.orderByDescending("createdAt")
query.limit = 1
query.findObjectsInBackgroundWithBlock { (objects: [AnyObject]?, error: NSError?) -> Void in
    if (error == nil) {
        if let firstObject = objects?.first {
            lastMessage = firstObject["Text"] as! String
        }
    } else {        
        // Log details of the failure
        println("query error: \(error) \(error!.userInfo!)")
    }
}