У меня проблема со словарем в закрытии.Я создал переменную словаря:
var dates = [String:String]()
Затем я заполнил словарь следующим кодом:
// Function to Retrieve Dates from iCloud
@objc func dotDates() {
let predicate = NSPredicate(value: true)
let query = CKQuery(recordType: "Events", predicate: predicate)
database.perform(query, inZoneWith: nil) {
(records, error) in
if error == nil {
for record in records! {
self.jobHold = record["jobName"]!
self.dateHold = record["jobDateTime"]!
// Date Conversion to CVDate
let conversion = Convert()
self.dateHold = conversion.convertStringToDate(date: self.dateHold)
// Store Dates in a Dictionary
self.dates[self.dateHold] = self.jobHold
}
} else {
print(error?.localizedDescription as Any)
}
}
print("**********", self.dates, "**********")
}
В области отладки показано, что данные есть:
********** ["8 October, 2018": "Anchor Lodge Rehab",
"7 October, 2018": "Anchor Lodge Office", "15 October,
2018": "Jarm", "12 October, 2018": "North Shore Endo",
"17 October, 2018": "Kidsmile Fresh"] **********
Моя проблема в том, что когда я пытаюсь получить доступ к словарю в другом месте кода, словарь пуст.
// Display dots for date events
func dotMarker(shouldShowOnDayView dayView: DayView) -> Bool{
print("**********", dates, "**********")
// Look up date in dictionary
if(dates[dayView.date.commonDescription] != nil){
return true // date is in the array so draw a dot
}
return false
}
В области отладки отображается:
********** [:] **********
********** [:] **********
********** [:] **********
Я не уверенпочему пусто?Любая помощь будет высоко ценится!