在Parse.com

时间:2015-08-23 12:40:28

标签: arrays swift parse-platform

我正在编写一些代码,我有一个Food对象,我有一个Food对象数组:var list: [Food] = [](这行代码在从一个全局变量开始)我有一行代码可以解析数组,但我不确定它是否正常工作,它仍然说" undefined"解析时应该是Food对象数组。我的问题很简单。

1 - 如何在Parse.com中创建Food对象数组?

2 - 如何从该数组中获取信息并使parse数组成为局部变量?

3 - 如何附加该数组,我知道我可以只调用.append(customFoodObject)到本地数组,这是我应该怎么做的?

4 - 一旦我编辑了数组,我是如何将其保存回解析?

:正是这4个问题,我已经被告知许多答案,例如"只是使用查询"或者"制作新物品"但我给出了实际物品的名称,因为如果你给出了我能看到作品的代码,然后了解它是如何工作的,我将不胜感激;提前感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

无论如何,问题需要大量的手稿,尽管如此,我会尽可能地用一些解释和代码片段来回答你的问题。

对象包含类似的东西,因此它们将成为数据库中表的一行。毕竟Parse是一个糖高的数据库API。因此,对象将映射到Parse中的Class,或者特定于Food类的类的行。

  1. 在Parse中创建一个Food对象非常简单,因为文档是相当明确的。

    let food = PFObject(className: "Food")
    food["name"] = "Sushi Pizza"
    food["price"] = "1100¥"
    
    //saves on the server even if the networks fails now
    //caches the result offline and when the phone enters in network it uploads
    food.saveEventually(nil)
    
  2. 用于储存食物的数量:

        let foodClassName = "Food"
        for index in foods!{
            let object          = PFObject(className: foodClassName)
            object["name"]      = index.name
            object["price"]     = index.price
            object.saveEventually(nil)
        }
    

    基本上,您使用className创建一个Food表,然后插入类似的对象并保存它。

    1. 获取数组正在查询解析数据库。您只需要知道Class Parse使用的名称。在我们的案例中,我们有" Food"存储在常量中。

      let query = PFQuery(className: foodClassName)
      //query.fromLocalDatastore()    //uncomment to query from the offline store
      query.findObjectsInBackgroundWithBlock { (objects, error) -> Void in
          if error == nil && objects != nil{
              for index in objects!{
                  (index as! PFObject).pin()      //pining saves the object in offline parse db
                  //the offline parse db is created automatically
                  self.makeLocalVariable(index as! PFObject)  //this makes the local food object
              }
          }
      }
      
    2. 所以为了将它保存到locl Food对象,我们最初让我们像这样转换PFObject

      var localFoods:[Food]?          //global scoped variable
      func makeLocalVariable(index:PFObject){
          let foodname = index.objectForKey("name") as! String
          let price = index.objectForKey("price") as! String          //we had the currrecny saved too
      
          let foodObj = Food(name: foodname, price: price)
          localFoods?.append(foodObj)
      }
      
      1. 是的,我这样做了。多数民众赞成正确。
      2. 4.因此,该过程基本上类似于获取数据。现在你要做的是假设获取Food名称为Pizza的数据,因为我们想要提高价格。你是怎么做到的。

            let queryEdit = PFQuery(className: foodClassName)
            queryEdit.whereKey("name", equalTo: "Pizza")
            query.findObjectsInBackgroundWithBlock { (objects, error) -> Void in
                if error == nil && objects != nil{
                    if objects!.count == 0{
                        //edit
                        let obj = (objects as! [PFObject]).first!
                        obj.setValue("2340¥", forKey: "price")
                        //save it back
                        obj.saveEventually(nil)
                    }
                }
            }
        

        我希望我回答你的问题。记住,对象可以映射到Parse中的Class或关系数据库中的表或实体。然后该表可以有许多类似的实例,你可以说它们是一种类型的数组。

        如果我能帮助你,请告诉我。干杯!

        这个例子的食物只是一个结构,但如果它具有功能,可以很容易地成为一个类。

        struct Food{
           var name:String?
           var price:String?
        }