Ios 查询解析表中的所有数据并放入数组

Ios 查询解析表中的所有数据并放入数组,ios,swift,parse-platform,Ios,Swift,Parse Platform,我正在制作一个跑步应用程序,并希望有一个viewController,其中用户可以随机显示跑步提示和事实。我想查询objectid的parse,然后引用id并将提示或事实分配给标签。目前,我已将ID硬编码到应用程序中,但我希望该数组包含查询结果。代码如下: func GetObjectID(){ ObjectIDs = ["id1","id2","id3","id4","id5","id6","id7","id8"] RandomID = Int(arc4random_unifo

我正在制作一个跑步应用程序,并希望有一个viewController,其中用户可以随机显示跑步提示和事实。我想查询objectid的parse,然后引用id并将提示或事实分配给标签。目前,我已将ID硬编码到应用程序中,但我希望该数组包含查询结果。代码如下:

func GetObjectID(){
    ObjectIDs = ["id1","id2","id3","id4","id5","id6","id7","id8"]
    RandomID = Int(arc4random_uniform(UInt32(ObjectIDs.count)))

}


func TheInfo(){
    GetObjectID()

    var query : PFQuery = PFQuery(className: "FactsandTips")
    query.getObjectInBackgroundWithId(ObjectIDs[RandomID]){
        (ObjectHolder : PFObject?, error: NSError?) -> Void in



        if (error == nil) {

            self.fact = ObjectHolder!.valueForKey("Fact") as? String

            self.tips = ObjectHolder!.valueForKey("Tips") as? Array





            if(self.tips.count > 0){

                self.factLabel.text = self.fact

                self.Button1.setTitle(self.tips[0], forState: UIControlState.Normal)

                self.Button2.setTitle(self.tips[1], forState: UIControlState.Normal)

                self.Button3.setTitle(self.tips[2], forState: UIControlState.Normal)

                self.Button4.setTitle(self.tips[3], forState: UIControlState.Normal)

            }



        } else {

            print("There is something wrong!")

        }



    }



}

我使用swift、Xcode7和parse作为我的后端

下面是我用来查询解析表、检索所有结果并将其全部添加到数组中的代码。然后我使用数组作为pickerView的源

    var query:PFQuery = PFQuery(className: "Drivers")
    query.addAscendingOrder("Name")
    query.findObjectsInBackgroundWithBlock {
        (objects: [AnyObject]?, error: NSError?) -> Void in
        if error == nil {
            if let objects = objects as? [PFObject] {
                for object in objects {
                    self.astrDrivers.append(object["Name"]! as! String)
                }
            }
            self.pkvDriverTrack.reloadAllComponents()
        } else {
            print("Error: \(error) \(error!.userInfo)")
        }
    }
注意行
self.astrivers.append(对象[“名称”]!as!字符串)
。这是将每条记录的
Name
列添加到my
self.astrivers
数组中

如果要检索多个列,最好创建一个自定义对象,如下所示:

class ObjectNewFact:NSObject {
   var column1:String = String() // You might want to choose more descriptive variable names (I just don't know what your column names are).
   var column2:Int = Int()
   // etc.
}
然后,您可以创建一个
ObjectNewFact
s数组,其行如下

var aFacts:[ObjectNewFact] = [ObjectNewFact]()
然后,您可以将例程修改为从Parse中检索数据:

    var query:PFQuery = PFQuery(className: "Drivers")
    query.addAscendingOrder("Name")
    query.findObjectsInBackgroundWithBlock {
        (objects: [AnyObject]?, error: NSError?) -> Void in
        if error == nil {
            if let objects = objects as? [PFObject] {
                for object in objects {
                    var NewFact:ObjectNewFact = ObjectNewFact()
                    NewFact.column1 = object["Column1"] as! String
                    NewFact.column2 = object["Column2"] as! Int
                    self.aFacts.append(NewFact)  
                }
            }
            self.pkvDriverTrack.reloadAllComponents()
        } else {
            print("Error: \(error) \(error!.userInfo)")
        }
    }
现在你有了一个充满事实的数组。您可能希望采用这种自定义对象方法,因为您还可以包括诸如事实ID或事实已显示多少次之类的内容(如果您正在跟踪这类事情的话)。它为将来的任何变化提供了更灵活的解决方案

我希望这有帮助