Ios 查询解析表中的所有数据并放入数组
我正在制作一个跑步应用程序,并希望有一个viewController,其中用户可以随机显示跑步提示和事实。我想查询objectid的parse,然后引用id并将提示或事实分配给标签。目前,我已将ID硬编码到应用程序中,但我希望该数组包含查询结果。代码如下: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
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
列添加到myself.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或事实已显示多少次之类的内容(如果您正在跟踪这类事情的话)。它为将来的任何变化提供了更灵活的解决方案
我希望这有帮助