我有一个NSManagedObject
子类,其中包含dateOfBirth
字段。
@NSManaged var dateOfBirth: NSDate
在其他地方,我正在下载大量JSON字符串,我需要用下载的JSON版本填充我的dateOfBirth
字段。我以为我有这个想法,但后来当我去使用它的值时,即使我从JSON返回的值已经存在,也是如此。
从那以后,我尝试了各种各样的咒语来尝试拯救。
//This is my latest 'attempt', trying to downcast the value to NSDate, it fails, originally i was just getting the .string value and converting it to a date
if let dateOfBirth = object["json"]["dateOfBirth"].stringValue as? NSDate{
//I actually had this formatter near the top of the function but thought perhaps it wasn't saving because the formatter was inaccessible or something?
let formatter = NSDateFormatter()
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS"
//This value returns correctly
println("dateOfBirth? : \(dateOfBirth)")
newSurveyObj.dateOfBirth = dateOfBirth
//This returns a nil for the dateOfBirth
println("newSurveyObj? : \(newSurveyObj.dateOfBirth)")
}
奇怪的是,我可以在应用程序的其他地方以类似的方式存储日期,
例如:
if let createdDate = object["createdDate"].string
{
newWorkObj.createdDate = formatter.dateFromString(createdDate)!
}
有效,这是NSManagedObject
子类:
@NSManaged var createdDate: NSDate
有没有人知道为什么我的dateOfBirth不会保存?
编辑:我得到的输出:
if let dateOfBirth = object["json"]["dateOfBirth"].string{
let formatter = NSDateFormatter()
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS"
println("dateOfBirth? : \(dateOfBirth)")
newEcoObj.dateOfBirth = formatter.dateFromString(dateOfBirth)!
println("newSurveyObj? : \(newSurveyObj.dateOfBirth)")
}
就是这样:
dateOfBirth? : 1995-01-01T00:00:00
fatal error: unexpectedly found nil while unwrapping an Optional value
但是,当我将dateOfBirth声明为可选时,我得到了这个输出:
dateOfBirth? : 1995-01-01T00:00:00
newSurveyObj? : nil for Street name
答案 0 :(得分:2)
[self.tableView registerClass:<Your UITableViewCell subclass> forCellReuseIdentifier:<Your identifier>]
(dateFormat
)的NSDateFormatter
与您获得的字符串yyyy-MM-dd'T'HH:mm:ss.SSS
不匹配。
您需要删除额外的1995-01-01T00:00:00
=&gt; .SSS
要匹配。
答案 1 :(得分:0)
if语句表达式总是会返回false吗?
object["json"]["dateOfBirth"].stringValue as? NSDate
您专门获取一个字符串,然后尝试将其强制转换为NSDate。很确定永远都会失败。
在你的另一个例子中,你专门将字符串解析为你设置的日期