我有以下代码:
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
答案 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)
是一种解决方法。