为什么这些方法返回" String!"而不是"字符串"?

时间:2015-01-24 20:56:32

标签: arrays cocoa-touch swift dictionary

我目前正在尝试将一个字典数组保存到NSUserDefaults。我原本计划将类型设为Array<Dictionary<String,String>>,但这似乎不是这种情况。 首先,我从以下UI对象获取String值:

@IBOutlet weak var name: UITextField!

@IBOutlet weak var instructor: UITextField!

@IBOutlet weak var time: UIDatePicker! 

然后将其保存到字典中,如下所示:

let values = ["name" : self.name.text, "instructor" : self.instructor.text, "date" : self.time.date.description]

然而,词典的类型推断为Array<Dictionary<String,String!>>而不是Array<Dictionary<String,String>>。问题似乎是self.name.textself.instructor.text返回字符串!,但self.time.date.description会返回字符串

我认为可以忽略这些并继续,但我想了解这里发生了什么而不是继续,并希望它不会在将来破坏某些东西。

1 个答案:

答案 0 :(得分:0)

根据iOS开发者库,UITextField text属性,返回!StringSource)。 description中的self.time.date.description表示日期对象为StringSource),常用于调试(将NSDate对象表示为{{1}的更好做法是使用DateFormatter