Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 在Swift中将NSDate数组转换为字符串数组_String_Swift_Parse Platform_Nsdateformatter - Fatal编程技术网

String 在Swift中将NSDate数组转换为字符串数组

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 =

我对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 = 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。您必须将其保存在后端,后端会自动设置此值