String 在Swift中将NSDate数组转换为字符串数组
我对swift和IOS编码有点陌生。我有一个NSdate数组,它是从parse“CreatedAt”列中检索的。我需要将该数组转换为字符串数组,以便将其用作tableview单元格中文本标签的输入String 在Swift中将NSDate数组转换为字符串数组,string,swift,parse-platform,nsdateformatter,String,Swift,Parse Platform,Nsdateformatter,我对swift和IOS编码有点陌生。我有一个NSdate数组,它是从parse“CreatedAt”列中检索的。我需要将该数组转换为字符串数组,以便将其用作tableview单元格中文本标签的输入 //I try the below, I defined resultsDateArrayString as string array variable, and resultsDateArray as NSdate array variable. var dateFormatter =
//I try the below, I defined resultsDateArrayString as string array variable, and resultsDateArray as NSdate array variable.
var dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "hh:mm"
resultsDateArrayString = dateFormatter.stringFromDate(self.resultsDateArray)
cell.postDateTxt.text = self.resultsDateArrayString[indexPath.row]
我将使用一个映射函数,NSDateFormatter将每个日期包装成您想要的输出格式
var dateFormatter = NSDateFormatter()
dateFormatter.dateStyle = ...
var strings = dates.map{dateFormatter.stringFromDate($0)}
这是一种将日期格式化为
字符串的低效方法,因为它每次都实例化一个新的NSDateFormatter
。考虑为类创建一个常数<代码> NSDateFormatter <代码>作为优化。
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell") as! UITableViewCell
let formatter = NSDateFormatter()
formatter.timeZone = NSTimeZone.systemTimeZone()
formatter.dateStyle = .ShortStyle
formatter.timeStyle = .ShortStyle
cell.textLabel!.text = formatter.stringFromDate(resultsDateArray[indexPath.row])
return cell
}
更新1
要获得更新问题中提到的hh:mm
格式,只需删除您用[nsdateformatter]标记问题的行formatter.dateStyle=.ShortStyle
因此,您似乎已经知道如何将日期转换为字符串…实际上,我尝试过,但无法使用数组实现。您尝试了什么?-self.resultsDateArray
是一个数组self.resultsDateArray[indexath.row]
是该数组的一个元素,即日期。。。现在把日期转换成字符串。我更新了我正在尝试的内容你好,库穆鲁兹,非常感谢你的回答。我更新为您的代码,但是当我运行时,在部分:self.resultsDateArray.append(object.objectForKey(“createdAt”)as!NSDate)中出现错误“在展开可选值时意外发现nil”。为什么会发生这种情况?很可能是因为该特定对象没有“createdAt”属性。我建议从objectForKey
安全地展开结果。类似于:如果让date=object.objectForKey(“createdAt”)作为!NSDate{self.resultsDateArray.append(date)}
另一种选择是因为您尚未初始化resultsDateArray
。您可以这样初始化它:var resultsDateArray:[NSDate]=[]
在这个链接中,使用object.updatedAt而不是objectforkey(“updatedAt”)会出现类似的问题,但它也不起作用。顺便问一下,我已经初始化了数组。您是如何生成数据的?通过查询解析后端?还是在本地创建它们?因为如果您在本地创建它们,那么它们的createdAt
属性为nil。您必须将其保存在后端,后端会自动设置此值