因此,我使用CloudKit并将所有数据作为[StartDay]提取到数组中,我的StartDay类如下所示:
import UIKit
import CloudKit
class StartDay {
var recordID: CKRecord.ID!
var wakeUp: String!
var sleptWell: String!
var dNN: String!
var created: String! {
get {
return created
}
}
}`
我的函数加载得到一个arraylist,其中包含从数据库接收的信息。在我的数据库中,它是这样的:“ 22.01.09:
func checkIfButtonShouldBeEnabled(startDayList: [StartDay]){
let startDayDates = startDayList.map{$0.created}
for i in 0..<startDayDates.count {
print(startDayDates)
}
}`
输出: 可选(“ 22.01.2019”) 可选(“ 22.01.2019”)
我想删除“ Optional()”,所以只显示“ 22.01.2019”,我该怎么做?
更新:获取功能
func loadStartDay() -> [StartDay]{
let predicate = NSPredicate(value: true)
let query = CKQuery(recordType: "StartDay", predicate: predicate)
let operation = CKQueryOperation(query: query)
var startDays: [StartDay] = []
operation.desiredKeys = ["wakeUp", "wellSlept", "dNN", "recordID", "createdDato"]
operation.recordFetchedBlock = { (record:CKRecord) in
let newStartDay = StartDay()
newStartDay.wakeUp = record.object(forKey: "wakeUP") as? String
newStartDay.sleptWell = record.object(forKey: "sleptWell") as? String
newStartDay.dNN = record.object(forKey: "dNN") as? String
newStartDay.recordID = record.object(forKey: "recordID") as? CKRecord.ID
newStartDay.created = record.object(forKey: "createdDato") as? String
print(newStartDay.created)
startDays.append(newStartDay)
}
答案 0 :(得分:2)
您可以使用print(startDayDates!)
或print(startDayDates ?? "default value")
。
但是我建议使用startDayList.compactMap()
而不是startDayList.map()
,以确保您的数组不包含nil值。
您也可以这样:
startDayList
.compactMap { $0.created }
.forEach { print($0) }
答案 1 :(得分:1)
您设计了您完全了解的数据库模型,其中记录属性始终存在。将类属性声明为隐式,未包装的可选属性(例如,不在写初始化程序的不在场证明)是非常糟糕的做法。
假设记录中的每个属性确实都有一个值,将这些属性声明为非可选属性,然后编写一个初始化程序。
至少created
和recordID
应该总是有一个值!
import UIKit
import CloudKit
class StartDay {
var recordID: CKRecord.ID
var wakeUp: String
var sleptWell: String
var dNN: String
var created: String
init(record : CKRecord) {
// recordID can be retrieved directly
self.recordID = record.recordID
self.wakeUp = record.object(forKey: "wakeUP") as! String
self.sleptWell = record.object(forKey: "sleptWell") as! String
self.dNN = record.object(forKey: "dNN") as! String
self.created = record.object(forKey: "createdDato") as! String
}
}
并使用
创建实例operation.recordFetchedBlock = { record in
startDays.append(StartDay(record: record))
}
现在Optional
已经消失了。
print(startDayList.map{ $0.created })