如何将日期存储在 swift 中的数组中?
How do I store dates in an array in swift?
我正在制作一个基本的规划器风格的应用程序,它从用户那里获取日期输入,然后在 table 中表示它。我已经创建了我的数据模型,我正在尝试添加一些示例数据来测试该模型。
这是我的数据模型:
import UIKit
class Data {
var name: String
var time1: NSDate
var time2: NSDate
var time3: NSDate
var time4: NSDate
var time5: NSDate
init?(name: String, time1: NSDate, time2: NSDate, time3: NSDate, time4: NSDate, time5: NSDate) {
self.name = name
self.time1 = time1
self.time2 = time2
self.time3 = time3
self.time4 = time4
self.time5 = time5
if name.isEmpty {
return nil
}
}
}
在我的 table 视图控制器中,我正在尝试创建示例数据。
import UIKit
class MedicineTableViewController: UITableViewController {
//MARK Properties
var data = [Data]()
override func viewDidLoad() {
super.viewDidLoad()
}
func loadSampleData() {
let data1 = Data(name: "Example", time1: NSDate(dateString: "08:00 a"), time2: NSDate(dateString: "10:00 a"), time3: NSDate(dateString: "02:00 p"), time4: NSDate(dateString: "06:00 p"), time5: NSDate(dateString: "10:00 p"))
Data += [data1]
}
所以首先我开始尝试以 "HH:MM" 格式声明我存储为整数的时间,但这导致 Xcode 将我的值存储为整数,然后我做了一些在线研究发现 NSDate
(dateString) 并认为我可以这样定义我的时间,但这也返回错误
"Cannot find an initializer for type 'NSDate' that accepts an argument list of type '(dateString: String)'"
谁能帮我解释一下这里出了什么问题,我只是错误地格式化了 NSDate
还是我的代码存在潜在问题?
尝试更改此行:
var data = [Data]()
进入这一行:
var data = [NSDate]()
并删除 name
字符串,我不确定您是否可以在其中存储字符串和 NSDate。
告诉我你的结果
最好使用 NSDateFormatter 来完成您正在尝试做的事情。
您应该创建一个日期格式化程序,然后使用 datefromString
方法来创建您的 NSDate。我不知道 NSDate(dateString: "<some string")
初始值设定项。如果您在一些示例代码中看到这一点,则可能是有人为此在 NSDate 上创建了一个扩展。
像这样的东西应该可以让你的时间价值:
var formatter = NSDateFormatter()
dateFormatter.dateFormat = "MM-dd-yyyy"
let time1 = dateFormatter.dateFromString("August 6, 2015")
您可以创建数据对象。
此外,这一行没有意义Data += [data1]
您正在尝试向此处的类型添加新元素。相反,您应该使用 data.append(data1)
我正在制作一个基本的规划器风格的应用程序,它从用户那里获取日期输入,然后在 table 中表示它。我已经创建了我的数据模型,我正在尝试添加一些示例数据来测试该模型。
这是我的数据模型:
import UIKit
class Data {
var name: String
var time1: NSDate
var time2: NSDate
var time3: NSDate
var time4: NSDate
var time5: NSDate
init?(name: String, time1: NSDate, time2: NSDate, time3: NSDate, time4: NSDate, time5: NSDate) {
self.name = name
self.time1 = time1
self.time2 = time2
self.time3 = time3
self.time4 = time4
self.time5 = time5
if name.isEmpty {
return nil
}
}
}
在我的 table 视图控制器中,我正在尝试创建示例数据。
import UIKit
class MedicineTableViewController: UITableViewController {
//MARK Properties
var data = [Data]()
override func viewDidLoad() {
super.viewDidLoad()
}
func loadSampleData() {
let data1 = Data(name: "Example", time1: NSDate(dateString: "08:00 a"), time2: NSDate(dateString: "10:00 a"), time3: NSDate(dateString: "02:00 p"), time4: NSDate(dateString: "06:00 p"), time5: NSDate(dateString: "10:00 p"))
Data += [data1]
}
所以首先我开始尝试以 "HH:MM" 格式声明我存储为整数的时间,但这导致 Xcode 将我的值存储为整数,然后我做了一些在线研究发现 NSDate
(dateString) 并认为我可以这样定义我的时间,但这也返回错误
"Cannot find an initializer for type 'NSDate' that accepts an argument list of type '(dateString: String)'"
谁能帮我解释一下这里出了什么问题,我只是错误地格式化了 NSDate
还是我的代码存在潜在问题?
尝试更改此行:
var data = [Data]()
进入这一行:
var data = [NSDate]()
并删除 name
字符串,我不确定您是否可以在其中存储字符串和 NSDate。
告诉我你的结果
最好使用 NSDateFormatter 来完成您正在尝试做的事情。
您应该创建一个日期格式化程序,然后使用 datefromString
方法来创建您的 NSDate。我不知道 NSDate(dateString: "<some string")
初始值设定项。如果您在一些示例代码中看到这一点,则可能是有人为此在 NSDate 上创建了一个扩展。
像这样的东西应该可以让你的时间价值:
var formatter = NSDateFormatter()
dateFormatter.dateFormat = "MM-dd-yyyy"
let time1 = dateFormatter.dateFromString("August 6, 2015")
您可以创建数据对象。
此外,这一行没有意义Data += [data1]
您正在尝试向此处的类型添加新元素。相反,您应该使用 data.append(data1)