我正在编写一些代码,我有一个Food
对象,我有一个Food
对象数组:var list: [Food] = []
(这行代码在从一个全局变量开始)我有一行代码可以解析数组,但我不确定它是否正常工作,它仍然说" undefined"解析时应该是Food
对象数组。我的问题很简单。
1 - 如何在Parse.com中创建Food
对象数组?
2 - 如何从该数组中获取信息并使parse数组成为局部变量?
3 - 如何附加该数组,我知道我可以只调用.append(customFoodObject)
到本地数组,这是我应该怎么做的?
4 - 一旦我编辑了数组,我是如何将其保存回解析?
:正是这4个问题,我已经被告知许多答案,例如"只是使用查询"或者"制作新物品"但我给出了实际物品的名称,因为如果你给出了我能看到作品的代码,然后了解它是如何工作的,我将不胜感激;提前感谢您的帮助。
答案 0 :(得分:3)
无论如何,问题需要大量的手稿,尽管如此,我会尽可能地用一些解释和代码片段来回答你的问题。
对象包含类似的东西,因此它们将成为数据库中表的一行。毕竟Parse是一个糖高的数据库API。因此,对象将映射到Parse中的Class,或者特定于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)
}
基本上,您使用className创建一个Food表,然后插入类似的对象并保存它。
获取数组正在查询解析数据库。您只需要知道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
}
}
}
所以为了将它保存到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.因此,该过程基本上类似于获取数据。现在你要做的是假设获取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?
}