一对多关系解析
One to many relations Parse
我找遍了,但找不到这个问题的答案。
我正在将播客及其相关剧集保存到 Parse,但以下代码仅保存 1 集和播客(我想在 for 循环中找到的每个条目都会重置 currentP
,并且只有找到的最后一个值会得到已保存)。
let currentP = PFObject(className: self.podcastClass)
currentP["user"] = PFUser.currentUser()
currentP["name"] = name
currentP["artist"] = artist
currentP["summary"] = summary
currentP["feedURL"] = feedURL
currentP["artworkURL"] = artworkURL
currentP["artwork"] = artwork
currentP["date"] = date
let episodesToParse = PFObject(className: self.episodesClass)
for episode in episodes {
episodesToParse["showDate"] = episode.date
episodesToParse["title"] = episode.title
episodesToParse["downloadURL"] = episode.enclosures[0].valueForKey("url") as? String
episodesToParse["showNotes"] = episode.summary
episodesToParse["localPath"] = ""
episodesToParse["isDownloaded"] = "no"
episodesToParse["parent"] = currentP
}
episodesToParse.saveInBackground()
如果我使用 episodesToParse.addObject(episode.date, forKey: "showDate")
之类的东西,则会返回以下错误:
[Error]: invalid type for key showDate, expected date, but got array (Code: 111, Version: 1.8.1)
我不确定如何进行。我想要的是按原样保存 currentP,并将其所有剧集保存在与其父级 (Podcast) 有关系的不同 class 中。如果您一次添加一集而不是一大堆,我找到了很多方法来做到这一点(我希望能够一次保存 500 个 episodesToParse
实例。
感谢您的帮助。
你的问题是,你在循环后保存了 episodesToParse
。您必须将 episodesToParse.saveInBackground()
移动到循环内,以便每次循环设置剧集的属性时,剧集都会更新:
for episode in episodes {
episodesToParse["showDate"] = episode.date
episodesToParse["title"] = episode.title
episodesToParse["downloadURL"] = episode.enclosures[0].valueForKey("url") as? String
episodesToParse["showNotes"] = episode.summary
episodesToParse["localPath"] = ""
episodesToParse["isDownloaded"] = "no"
episodesToParse["parent"] = currentP
//Inside
episodesToParse.saveInBackground()
}
或者您可以使用 PFObject.saveAllInBackground
来保存所有对象:
var episodesToSave[PFObject] = []
for episode in episodes {
var episodeToParse
episodeToParse["showDate"] = episode.date
episodeToParse["title"] = episode.title
episodeToParse["downloadURL"] = episode.enclosures[0].valueForKey("url") as? String
episodeToParse["showNotes"] = episode.summary
episodeToParse["localPath"] = ""
episodeToParse["isDownloaded"] = "no"
episodeToParse["parent"] = currentP
//Add to episode-array
episodesToSave.append(episodesToParse)
}
//Save all objects in the array
PFObject.saveAllInBackground(episodesToSave)
我找遍了,但找不到这个问题的答案。
我正在将播客及其相关剧集保存到 Parse,但以下代码仅保存 1 集和播客(我想在 for 循环中找到的每个条目都会重置 currentP
,并且只有找到的最后一个值会得到已保存)。
let currentP = PFObject(className: self.podcastClass)
currentP["user"] = PFUser.currentUser()
currentP["name"] = name
currentP["artist"] = artist
currentP["summary"] = summary
currentP["feedURL"] = feedURL
currentP["artworkURL"] = artworkURL
currentP["artwork"] = artwork
currentP["date"] = date
let episodesToParse = PFObject(className: self.episodesClass)
for episode in episodes {
episodesToParse["showDate"] = episode.date
episodesToParse["title"] = episode.title
episodesToParse["downloadURL"] = episode.enclosures[0].valueForKey("url") as? String
episodesToParse["showNotes"] = episode.summary
episodesToParse["localPath"] = ""
episodesToParse["isDownloaded"] = "no"
episodesToParse["parent"] = currentP
}
episodesToParse.saveInBackground()
如果我使用 episodesToParse.addObject(episode.date, forKey: "showDate")
之类的东西,则会返回以下错误:
[Error]: invalid type for key showDate, expected date, but got array (Code: 111, Version: 1.8.1)
我不确定如何进行。我想要的是按原样保存 currentP,并将其所有剧集保存在与其父级 (Podcast) 有关系的不同 class 中。如果您一次添加一集而不是一大堆,我找到了很多方法来做到这一点(我希望能够一次保存 500 个 episodesToParse
实例。
感谢您的帮助。
你的问题是,你在循环后保存了 episodesToParse
。您必须将 episodesToParse.saveInBackground()
移动到循环内,以便每次循环设置剧集的属性时,剧集都会更新:
for episode in episodes {
episodesToParse["showDate"] = episode.date
episodesToParse["title"] = episode.title
episodesToParse["downloadURL"] = episode.enclosures[0].valueForKey("url") as? String
episodesToParse["showNotes"] = episode.summary
episodesToParse["localPath"] = ""
episodesToParse["isDownloaded"] = "no"
episodesToParse["parent"] = currentP
//Inside
episodesToParse.saveInBackground()
}
或者您可以使用 PFObject.saveAllInBackground
来保存所有对象:
var episodesToSave[PFObject] = []
for episode in episodes {
var episodeToParse
episodeToParse["showDate"] = episode.date
episodeToParse["title"] = episode.title
episodeToParse["downloadURL"] = episode.enclosures[0].valueForKey("url") as? String
episodeToParse["showNotes"] = episode.summary
episodeToParse["localPath"] = ""
episodeToParse["isDownloaded"] = "no"
episodeToParse["parent"] = currentP
//Add to episode-array
episodesToSave.append(episodesToParse)
}
//Save all objects in the array
PFObject.saveAllInBackground(episodesToSave)