Arrays 获取、存储和访问Parse.com中的自定义数据数组

Arrays 获取、存储和访问Parse.com中的自定义数据数组,arrays,swift,parse-platform,Arrays,Swift,Parse Platform,我正在编写一些代码,其中我有一个Food对象,我有一个Food对象数组:var list:[Food]=[](这行代码在开始时被称为全局变量)我有几行代码在解析中生成一个数组,但我不确定它是否工作,它仍然表示“未定义”在解析中,它应该是食物对象数组。我的问题很简单 1-如何在Parse.com中制作食物对象数组 2-如何从该数组中获取信息并使parse数组成为局部变量 3-如何附加该数组,我知道我可以直接调用.append(customFoodObject)到本地数组,我应该这样做吗 4-编辑完

我正在编写一些代码,其中我有一个
Food
对象,我有一个
Food
对象数组:
var list:[Food]=[]
(这行代码在开始时被称为全局变量)我有几行代码在解析中生成一个数组,但我不确定它是否工作,它仍然表示“未定义”在解析中,它应该是
食物
对象数组。我的问题很简单

1-如何在Parse.com中制作
食物
对象数组

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

3-如何附加该数组,我知道我可以直接调用
.append(customFoodObject)
到本地数组,我应该这样做吗

4-编辑完数组后,如何将其保存回解析


:就这4个问题,我被告知很多答案,比如“只使用查询”或“创建新对象”,但我给出了实际对象的名称,因为如果您给出代码,我可以看到它的工作原理,然后理解它的工作原理,我将不胜感激;提前感谢您的帮助。

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

对象包含类似的内容,因此它们将是数据库表中的一行。毕竟,Parse是一个糖衣足食的数据库API。所以一个对象将被映射到Parse中的一个类,或者特别是Food类型的类的一行

  • 在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)
    
  • 要存储食物数组,请执行以下操作:

        let foodClassName = "Food"
        for index in foods!{
            let object          = PFObject(className: foodClassName)
            object["name"]      = index.name
            object["price"]     = index.price
            object.saveEventually(nil)
        }
    
    基本上,您可以使用类名创建一个食物表,然后插入类似的对象并保存它

  • 获取数组正在查询解析数据库。您只需要知道Parse使用的类的名称。在我们的例子中,如果“食物”储存在一个常数中

    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
            }
        }
    }
    
  • 因此,为了将其保存到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)
    }
    
  • 是的,我是那样做的。没错
  • 4.所以这个过程基本上类似于取数据。现在您要做的是假设获取名为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)
                }
            }
        }
    
    我希望我回答了你的问题。请记住,对象可以映射到解析中的类、关系数据库中的表或实体。然后该表可以有许多类似的实例,可以说它们是一种类型的数组

    如果我能帮你更多,请告诉我。干杯

    本例中的Food只是一个结构,但如果它具有功能,则很容易成为一个类

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

    嗯,我为对象创建了一个seperate类,现在我将使用一个查询从parse中获取信息?另外,我希望对象food数组是特定于用户的,我已经有了一个用户类,我可以将对象保存给用户吗?或者我必须创建一个不同的类吗?通过在数据库中的食物表中引用一个id,可以实现特定于用户的食物对象。从数据库关系的角度考虑。userid | username | password现在对于食物你会有类似于foodid | userid | name | price的东西。用户ID会给你一个与食物相关的用户的参考。老兄,当我这么说的时候,你还会收到通知吗?如果你看到了,我对提供的信息有一个小问题。我想知道如何更改或编辑一个pfobject,然后将其发送回,但不进行轻微更改以复制