Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ios swift解析:深度查询及其结果数据存在一般性问题_Ios_Swift_Parse Platform - Fatal编程技术网

ios swift解析:深度查询及其结果数据存在一般性问题

ios swift解析:深度查询及其结果数据存在一般性问题,ios,swift,parse-platform,Ios,Swift,Parse Platform,在理解解析中处理深层指针结构的正确方法时,我仍然存在一些问题 例如: 卡片有指向卡片集的指针 卡片集有指向课程和用户的指针 比如说,我想要所有的卡片,包括 Lesson.name 每个卡组的卡数 我可以在一个查询中查询所有这些吗? 并且在没有任何额外的fetchifneedededbackgroundithblock查询的情况下,数据是否可用 我知道我能从中得到教训 var query = PFQuery(className: "CardSet") query.whereKey("user"

在理解解析中处理深层指针结构的正确方法时,我仍然存在一些问题

例如:

卡片有指向卡片集的指针

卡片集有指向课程用户的指针

比如说,我想要所有的卡片,包括

  • Lesson.name
  • 每个卡组的卡数
我可以在一个查询中查询所有这些吗? 并且在没有任何额外的
fetchifneedededbackgroundithblock
查询的情况下,数据是否可用

我知道我能从中得到教训

var query = PFQuery(className: "CardSet")
query.whereKey("user", equalTo: PFUser.currentUser())
query.includeKey("lesson")
但这只给了我一个lesson对象,我无法访问这个类中的任何数据(比如col“name”),除非我使用
fetchifneedededbackgroundithblock
什么需要另一个查询,当然也需要更多的时间来加载

我可以做些什么来获取所有查询的数据

包括所有指针列

为了使用将此数据固定到本地数据存储

PFObject.pinAllInBackground(对象,块:nil)


不要忘记,如何查询与卡片集相关的卡片数量?

首先,我建议在Parse中进行子类化,它可以使表(指针等)之间的关系更清晰。 如何对可以在解析时探索的PFObjects进行子类化

如何查询卡套中的卡数

你需要一套你想要的卡片。(PFObject或子类PFObject)。 那么就这样做:

var query = PFQuery(classname: "cards")
query.whereKey("CardSet", equalTo: yourCardSetObject)
//Synchronously
query.findObjects().count
//Asynchronously
query.findObjectsInBackgroundWithBlock({
      (objects, error) in
      if error != nil {
           println(error.localizedDescription)
           return
      }
      objects.count             
 })
如何获取课程名称

正如我所说的,建议对PFObjects进行子类化,因为您需要对对象进行强制转换,这对于调试来说并不有趣,而且是可怕的代码。 我是这样做的:

var query = PFQuery(className: "CardSet")
query.whereKey("user", equalTo: PFUser.currentUser())
query.includeKey("lesson")
query.findObjectsInBackgroundWithBlock({
     (objects, error) in
     if error != nil {
         println(error.localizedDescription)
         return
     }
     for object in objects as? [PFObject] {
         var lesson = object["lesson"] as PFObject
         println(lesson["name"])
     }
})