ios - 解析 localDatastore 仅返回 1 个对象

标签 ios swift parse-platform swift2

我有一个播客应用程序。当用户点击订阅按钮时,我在我的对象上执行以下代码:

    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/

相关文章:

ios - 使用 CAKeyFrameAnimation 的时变绘图的高效动画

javascript - 在 Angular 中使用 Parse Client Key 会出现 CORS 错误

ios - Alamofire JSON 请求不从服务器中提取数据

Swift Fetch 请求在结果中返回空项

ios - 如何将包 'Storage' 导入到 Swift 项目中?

swift - relation.query().limit 不工作(解析),只得到 100 个对象

ios - Xcode 6.3-Shell脚本调用错误(解析崩溃报告)

iphone - 使用按钮设置 AVAudioPlayer 音量

ios - Cordova/Phonegap 文件传输 iOS 错误 1

iOS7如何根据指定时区获取当前时间和日期?