如何查询 Parse.com 日期并将其转换为 NSDate/String

How to query and convert Parse.com Date to NSDate/String

我想获取解析列“createdAt”,对其进行查询并将其转换为显示在 UI 上的字符串,作为在发布产品时向用户显示的标签,以及当它到期时。

Whosebug上也有类似的问题,但是none帮了我,都给我报错和崩溃。

我正在使用 TableViewController class 并且我正在查询两件事:productNametimeCreated。 (productName 我可以毫无问题地在单元格中显示。)

我尝试了几种获取日期的方法:

这是第一种方法。我尝试用另一个 Parse 对象查询它:

var productName = [String]()

var timeCreated = [NSDate]()

//Arrays above the viewDidLoad() to store the productName and the   timeCreated

override func viewDidLoad() {
    super.viewDidLoad()



    var query = PFQuery(className: "ProductInfo")

    query.findObjectsInBackgroundWithBlock ({ (objects, error) -> Void in

    if let objects = objects {

        self.productName.removeAll(keepCapacity: true)
        self.timeCreated.removeAll(keepCapacity: true)

        for object in objects {

            self.productName.append(object["pName"] as! String)

            self.timeCreated.append(object["createdAt"] as! NSDate)



            print(self.productName)
            print(self.timeCreated)

            self.tableView.reloadData()


            }


        }


    })


}

我尝试的第二种方法是使用此代码从 productName 对象单独查询它。最终将其格式化,然后用stringFromDate将其转换成字符串。我没有将它放入数组中,但我假设如果我想使用它,我也应该这样做??这是 link 我试过但没有帮助:How to convert a parse date object to a string? 像这样:

 var dateQuery = PFQuery(className:"ProductInfo")

    dateQuery.findObjectsInBackgroundWithBlock ({ (objects, error) -> Void in

        if let objects = objects {

        for object in objects {
            var createdAt = object["createdAt"]
            if createdAt != nil {
                let dateFormatter = NSDateFormatter()
                dateFormatter.dateFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.SSS'Z'"
                let date = dateFormatter.stringFromDate(createdAt as! NSDate)
                print(date)
            }
        }
    }
})

这也在 viewDidLoad 方法中,但就在第一个查询之下。

我得到的错误是:fatal error: unexpectedly found nil while unwrapping an Optional value 两种方式。

它以我尝试的第一种方式突出显示了这一行: self.timeCreated.append(object["createdAt"] as! NSDate)

这行是我做的第二种方式: let date = dateFormatter.stringFromDate(createdAt as! NSDate)

为什么它给我一个错误?关于谁查询它并将其转换为我可以使用的字符串(在数组中)的任何想法?

非常感谢任何帮助。

创建日期就像PFObject的一个私有参数,所以你应该使用提供的访问器函数而不是像通用容器一样尝试访问它。因此,将您的代码更改为:

self.timeCreated.append(object.createdAt as NSDate)
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MM'-'dd'-'yyyy'"

let date = dateFormatter.stringFromDate((<yourParseObjectHere>.createdAt as NSDate?)!)
yourLabel.text = date