这是我遇到过的最疯狂的错误。我试图从Orders表中名为nameRetailer的列中获取值,但它一直变为零。
正确返回相同String类型的其他列,包括下面显示的status列。
有什么可能导致这种情况?拼写肯定是正确的。请帮帮....
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let date = object?.objectForKey("dueDate") as! NSDate
let strDate = dateFormatter.stringFromDate(date)
cell.retailerName.text = object?.objectForKey("nameRetailer") as? String
cell.orderDueDate.text = strDate
cell.orderStatus.text = object?.objectForKey("status") as? String
当我尝试打印对象的值?.objectForKey(“nameRetailer”)时,它在控制台中显示为nil。在解析数据浏览器中,列包含数据并已刷新。
更新:添加其他代码:
负责表视图的整个类代码:
class OrderViewController: PFQueryTableViewController {
override func queryForTable() -> PFQuery {
let query = PFQuery(className: "Orders")
query.cachePolicy = .CacheElseNetwork
query.orderByAscending("createdAt")
return query
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject?) -> PFTableViewCell? {
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! OrdersTableViewCell
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let date = object?.objectForKey("dueDate") as! NSDate
let strDate = dateFormatter.stringFromDate(date)
cell.retailerName.text = object?.objectForKey("nameRetailer") as? String
cell.orderDueDate.text = strDate
cell.orderStatus.text = object?.objectForKey("status") as? String
print(object)
//let imageFile = object?.objectForKey("image") as PFFile
//cell.cellImageView.image = UIImage(named:"placeholder")
//cell.cellImageView.file = imageFile
//cell.cellImageView.loadInBackground()
return cell
}
override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
if indexPath.row + 1 > self.objects?.count
{
return 44
}
let height = super.tableView(tableView, heightForRowAtIndexPath: indexPath)
return height
}
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
if indexPath.row + 1 > self.objects?.count
{
self.loadNextPage()
tableView.deselectRowAtIndexPath(indexPath, animated: true)
self.performSegueWithIdentifier("showDetail", sender: self)
}
}
订单表的图像:
这是打印PFObject的日志快照:
这是显示两行的更新快照
答案 0 :(得分:3)
您已将缓存策略设置为首先在本地缓存中查找数据,这可能是陈旧的。
变化:
query.cachePolicy = .CacheElseNetwork
到
query.cachePolicy = .NetworkOnly // ignores cache on reading, but saves to cache
或
query.cachePolicy = .IgnoreCache // no cache at all -- this is the default
(或基于您的特定背景和用例的其他适当值)