将String数组转换为Int Array Swift

时间:2015-10-27 20:15:17

标签: arrays string swift int

String值转换为数组中的Int值后,当我打印到日志时,我得到的是:[0, 0, 0, 0]当输出应该是:{{1} } (没有引号和["18:56:08", "18:56:28", "18:57:23", "18:58:01"]冒号)。

我在将值添加到字符串数组后直接转换字符串数组。我假设我没有在正确的时间转换值,或者我的方法错误,这就是我得到:输出的原因。

这是我的 ViewController 代码:

0 0 0 0

当我在class FeedTableViewController: UITableViewController { var productName = [String]() var productDescription = [String]() var linksArray = [String]() var timeCreatedString = [String]() var minuteCreatedString = [String]() var intArray = Array<Int>!() override func viewDidLoad() { super.viewDidLoad() var query = PFQuery(className: "ProductInfo") query.findObjectsInBackgroundWithBlock ({ (objects, error) -> Void in if let objects = objects { self.productName.removeAll(keepCapacity: true) self.productDescription.removeAll(keepCapacity: true) self.linksArray.removeAll(keepCapacity: true) self.timeCreatedString.removeAll(keepCapacity: true) for object in objects { self.productName.append(object["pName"] as! String) self.productDescription.append(object["pDescription"] as! String) self.linksArray.append((object["pLink"] as? String)!) // This is where I'm querying and converting the date: var createdAt = object.createdAt if createdAt != nil { let date = NSDate() let dateFormatter = NSDateFormatter() dateFormatter.dateFormat = "MM/dd/YYY/HH/mm/ss" let string = dateFormatter.stringFromDate(createdAt as NSDate!) var arrayOfCompontents = string.componentsSeparatedByString("/") self.timeCreatedString.append("\(arrayOfCompontents[0]) \(arrayOfCompontents[1]) \(arrayOfCompontents[2])") self.minuteCreatedString.append("\(arrayOfCompontents[3]):\(arrayOfCompontents[4]):\(arrayOfCompontents[5])") self.intArray = self.minuteCreatedString.map { Int($0) ?? 0} print("INT ARRAY \(self.intArray)") print(self.minuteCreatedString.map { Int($0) ?? 0}) print(self.minuteCreatedString) } self.tableView.reloadData() } } }) } 方法中的另一个ViewController中尝试此操作而没有发生Parse /查询时,我得到了正确的输出:转换后的Ints数组。我假设在 我将字符串转换为Ints时出现的问题。

我应该以什么顺序/在哪里将字符串数组转换为Ints数组?我应该从viewDidLoad转换为Date吗?如果是这样,我该怎么做?我做错了吗?我非常困惑......

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

如果您还有NSDate个对象,可以使用日期格式化程序创建日期字符串

let createdAt = NSDate() // or give date object
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat =  "HH:mm:ss"
let string = dateFormatter.stringFromDate(createdAt) // "18:56:08"

或者如果您想要小时,分钟和秒的整数值,请使用NSDateComponents

let comps = NSCalendar.currentCalendar().components([.Hour, .Minute, .Second], fromDate: createdAt)
let hour = comps.hour
let minute = comps.minute
let seconds = comps.second
let intArray = [hour, minute, second]