2015-05-31 44 views
-3

我试图做一个简单的日期格式斯威夫特,但我发现了以下错误:不能援引“stringFromDate”错误迅速

"Cannot invoke 'stringFromDate' with an argument list of type '(NSDate?!)'" 

我的代码如下:

override func tableView(tableView: UITableView, cellForRowAtIndexPath 

    indexPath: NSIndexPath) -> UITableViewCell { 

    let cell = tableView.dequeueReusableCellWithIdentifier("cell", 

    forIndexPath: indexPath) as! UITableViewCell 

    // Configure the cell... 

    let dateFormatter = NSDateFormatter() 

    dateFormatter.dateFormat = ("dd-MMM-yyyy") 

    var myUsers: AnyObject = users[indexPath.row] 

    let strDate = dateFormatter.stringFromDate(myUsers.createdAt) 


    return cell 
} 

}

有谁知道为什么我不能做到这一点在斯威夫特?我以前使用过这种方法,它工作正常。我已经搜索了其他答案,但我还没有找到任何合适的。

欣赏任何可用的帮助。非常感谢

+0

你不需要首先将myUsers转换为用户对象吗?现在它是'AnyObject' –

回答

0

检查下面的代码:

var dateFormatter = NSDateFormatter() 
    dateFormatter.dateFormat = "yyyy-MM-dd" 
    let d = NSDate() 
    let s = dateFormatter.stringFromDate(d) 
    println(s) 
+0

你是对的,但这个OP不理解它。他/她只是复制和粘贴而不理解它。 –

-1

这是您的第一篇文章:

这行代码是不成立的格式正确,因为这就是所谓的从String转换到Date

dateFormatter.dateFromString("dd-MMM-yyyy") 

所以,你必须先设置格式磕此,它只是一个小错误,并注意下一次:

dateFormatter.dateFormat = "yyyy-MM-dd" 

这是后您编辑后:

必须有一个明显的错误在这里:

var myUsers: AnyObject = users[indexPath.row] 

AnyObject没有财产createdAt。这就是为什么你无法做到的。并确保users数组是'PFUser'的数组。否则,它仍然会有错误。

+0

如果OP更改了这段代码,它仍然不起作用。 'stringFromDate“...”)'应该用于输入需要转换为日期的字符串。 dateFormat(确实)用于设置格式,但你仍然需要使用'stringFromDate' – milo526

+0

我的理解是,'myUsers.createdAt'是'Date'的一个实例。首先,格式必须设置,我在这一点上是正确的。目的是从'Date'转换为'String'。那么,为什么你需要'dateFromString'。我没有看到从'String'转换为'Date'的目的。 @ milo526 –