Я пишу приложение tvOS. Я хочу проверить, есть ли запись в базе данных CloudKit.Проверка наличия или отсутствия записи в CloudKit с Swift 2
Я пытаюсь сделать это, посмотрев, есть ли запись с конкретным eventID
.
В идеале, я хочу, чтобы вызвать функцию, которая возвращает истину или ложь:
if isEventInWatchListFile(eventID) {
// ... do things
}
То, что я попытался следующий:
var results = [AnyObject]()
var onList:Bool?
. . .
func isEventInWatchListFile(eventID: String) -> Bool {
let container = CKContainer(identifier: "the container")
let privateDB = container.privateCloudDatabase
let predicate = NSPredicate(format: "eventID == %@",eventID)
let query = CKQuery(recordType: "UserWatchlist", predicate: predicate)
privateDB.performQuery(query, inZoneWithID: nil) { results , error in
guard let results = results else {
// error handler to come
return
}
if results[0]["eventID"] != nil {
self.onList = true
} else {
self.onList = false
}
}
return self.onList!
}
Этого сбой с «фатальной ошибкой: неожиданно нашел ноль при развертывании необязательного значения ". Я думаю, это потому, что onList
заперт в закрытии. У меня есть два вопроса:
1) Можно ли передать onList
в инструкцию return
, и если да, то как? Я прочитал о закрытии в Swift, но не знаю, как применить то, что я прочитал.
2) Есть ли лучший способ сделать тест, который я хочу сделать? Мой подход кажется неуклюжим для меня.
Я очень новичок в iOS и Swift. Любая помощь с благодарностью получена.
MirekE, спасибо большое. Вы, конечно, правы, и ваша стратегия имеет смысл. В контексте более крупной модели данных мне придется перестроить некоторые вещи, но ваша идея дает мне дорогу вперед. –
Пожалуйста, отметьте этот ответ как принято. –