解析本地数据存储区仅返回一个对象

时间:2015-12-09 16:41:21

标签: ios swift parse-platform relationship

我有以下代码:

var episodesToSendToParse = [PFObject]()
let currentPodcast = PFObject(className: "Podcast")

currentPodcast["name"] = name
currentP["user"] = PFUser.currentUser()

for episode in episodes {
  let episodes2 = PFObject(className: self.episodesClass)
  episodesToParse["title"] = episode.title
  episodesToParse["parent"] = currentPodcast
  episodesToSendToParse.append(episodes2)
}

PFObject.pinAllInBackground(episodesToSendToParse).continueWithBlock { (task: BFTask!) -> AnyObject! in
        if let error = task.error {
            print(error)
            return task;
        }
        print("finished pinning")
        return task;
    }

PFObject.saveAllInBackground(episodesToSendToParse).continueWithBlock { (task: BFTask!) -> AnyObject! in
        if let error = task.error {
            print(error)
            return task;
        }
        NSNotificationCenter.defaultCenter().postNotificationName("podcastSaved", object: self)
        print("finished saving")
        return task;
    }
}

它可以很好地保存Parse的服务器。播客剧集也在本地保存,但播客本身会覆盖我之前保存的任何其他播客,导致我的tableview始终只加载1个条目。我认为这可能是因为以下内容(取自parse.com):

  

启用您应该注意的本地数据存储有几个副作用。启用时,只有一个给定PFObject的实例。例如,假设您有一个“GameScore”类的实例,其objectId为“xWMyZ4YEGZ”,然后您使用该objectId为所有“GameScore”实例发出PFQuery。结果将是您在内存中已有的对象的相同实例。

但是我不知道如何解决这个问题。

我正在运行Parse 1.10.0

2 个答案:

答案 0 :(得分:0)

你的代码中有拼写错误。

替换它:

for episode in episodes {
  let episodes = PFObject(className: self.episodesClass)
  episodesToParse["title"] = episode.title
  episodesToParse["parent"] = currentPodcast
  episodesToSendToParse.append(episodesToParse)
}

有了这个:

for episode in episodes {
  let episodes = PFObject(className: self.episodesClass)
  episodes["title"] = episode.title
  episodes["parent"] = currentPodcast
  episodesToSendToParse.append(episodes)
}

答案 1 :(得分:0)

这是一个Parse bug。请参阅:#535

使用pinAllInBackground(objects: [PFObject]?, withName: String)是一种解决方法。