swift – NSDate变量为nil

swift – NSDate变量为nil,第1张

概述Person类的init方法看起来像 init (id:int64, firstName:String, lastName:String, birthDay:NSDate?) 正如你所看到的,BirthDay是可选的,因为我们并不总是有生日. 数据来自SQLite数据库. SQLite中不存在日期类型,因此日期表示为字符串(可以为NULL).要将该字符串转换为NSDate,我创建了NSDate的扩 Person类的init方法看起来像

init (ID:int64,firstname:String,lastname:String,birthDay:NSDate?)

正如你所看到的,BirthDay是可选的,因为我们并不总是有生日.

数据来自sqlite数据库. sqlite中不存在日期类型,因此日期表示为字符串(可以为NulL).要将该字符串转换为NSDate,我创建了NSDate的扩展:

extension NSDate: Value {    public class var declaredDatatype: String {        return String.declaredDatatype    }    public class func fromDatatypeValue(stringValue: String) -> NSDate {        return sqlDateFormatter.dateFromString(stringValue)!    }    public var datatypeValue: String {        return sqlDateFormatter.stringFromDate(self)    }}

所以在创建一个人时:

let person = Person(ID: row[ID],firstname: row[first_name],lastname: row[last_name],birthDay:NSDate.fromDatatypeValue(row[birthday]!))

如果生日字符串为NulL,则会失败. (我必须解开行[birthday]!因为需要一个非可选的String,这可能/不能更改)

所以我的想法是在创建这个人之前对此进行测试

var birthday : NSDate            if let birthdayString = row[Person.birthday] {                birthday = NSDate.fromDatatypeValue(birthdayString)            } else {                birthday=nil            }

并在init函数中使用birthday.

但是swift告诉我:不能将’nil’类型的值赋给’NSDate’的值

怎么解决这个问题?

PS. :我知道我可以有一个if和2初始化器,但我宁愿没有,因为我的Person init func有12个参数(为了简单起见,我只使用了4个以上)并保持这是一个皮塔饼

解决方法 请执行下列 *** 作.

var birthday : NSDate? = nilif let birthdayString = row[Person.birthday] {    birthday = NSDate.fromDatatypeValue(birthdayString)}
总结

以上是内存溢出为你收集整理的swift – NSDate变量为nil全部内容,希望文章能够帮你解决swift – NSDate变量为nil所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1004544.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存