我有一个播客应用程序。当用户点击订阅按钮时,我在我的对象上执行以下代码:
PFObject.pinAllInBackground(self.episodesToSendToParse)
PFObject.saveAllInBackground(self.episodesToSendToParse)
在我的主视图 Controller (PFQueryTableViewController
)中,我有以下精简代码:
class MainTableViewController: PFQueryTableViewController {
override init(style: UITableViewStyle, className: String!) {
super.init(style: style, className: className)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.parseClassName = "Podcast"
self.pullToRefreshEnabled = true
self.textKey = "name"
self.imageKey = "artwork"
self.paginationEnabled = true
self.objectsPerPage = 50
}
override func viewWillAppear(animated: Bool) {
print("view will appear")
if (PFUser.currentUser() != nil) {
self.loadObjects()
print("reloading")
}
}
override func queryForTable() -> PFQuery {
let query = PFQuery(className: "Podcast")
query.fromLocalDatastore()
query.whereKey("user", equalTo: PFUser.currentUser()!)
return query
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject?) -> PFTableViewCell? {
let cellIdentifier = "Cell"
var cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as? PFTableViewCell
if cell == nil {
print("cell not created")
cell = PFTableViewCell(style: .Subtitle, reuseIdentifier: cellIdentifier)
}
if let name = object?["name"] as? String {
cell!.textLabel!.text = name
}
if let artist = object?["artist"] as? String {
cell!.detailTextLabel!.text = artist
}
return cell!
}
}
问题是我的 tableView 中只返回一个播客,这是最后保存的播客。如果我禁用 queryForTable(),将从在线 Parse 中提取数据并且加载正常。我已经检查了模拟器文件夹中的 ParseOfflineStore
数据库,所有数据都在那里。我不确定此时我能做什么。
localDatastore 当然是在 AppDelegate 中激活的。
编辑:我是黄。所有数据未正确保存在本地数据存储中。所有播客剧集均已正确保存,但我递归地保存父播客,但它只是替换了以前的播客。它不会在数据库中添加新条目。这是我用来保存播客的方法:
class SaveToParse {
let podcastClass = "Podcast"
let episodesClass = "Episodes"
var episodesToSendToParse = [PFObject]()
func savePodcastToParse(name: String, artist: String, summary: String, feedURL: String, artworkURL: String, date: NSDate, episodes: [MWFeedItem], artwork: PFFile) {
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
for episode in episodes {
let episodesToParse = PFObject(className: self.episodesClass)
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
self.episodesToSendToParse.append(episodesToParse)
self.episodesToSendToParse.append(currentP)
}
PFObject.pinAllInBackground(self.episodesToSendToParse)
PFObject.saveAllInBackground(self.episodesToSendToParse)
}
}
最佳答案
您需要像这样实现 UITableViewDataSource 的 numberOfRowsInSection: :
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.episodesToSendToParse.count
}
关于ios - 解析 localDatastore 仅返回 1 个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32202416/