sprintf(mystring, "%05d", myInt);
Здесь «05» говорит «используйте 5 цифр с ведущими нулями».
Если вы ссылаетесь на примеры из царства Swift Docs , я подозреваю, что try!
широко используется для краткости. Пользователю дается быстрый и грязный обзор основных понятий без слишком больших умственных затрат.
Вы, вероятно, будете сталкиваться с ошибками в какой-то момент вашего путешествия с использованием Царства. Позже вы заметите в документах, в разделе Области> Обработка ошибок , приведен пример do-catch
.
do {
let realm = try Realm()
} catch let error as NSError {
// handle error
}
Для меня это означает, что примеры кода из документации не обязательно производственного качества, и пользователю рекомендуется использовать соответствующие функции обработки ошибок Swift.
Я справляюсь с этой проблемой, создавая класс DatabaseManager, который обрабатывает маловероятное событие, когда царство выдает ошибку:
public class DatabaseManager {
static var realm: Realm {
get {
do {
let realm = try Realm()
return realm
}
catch {
NSLog("Could not access database: ", error)
}
return self.realm
}
}
public static func write(realm: Realm, writeClosure: () -> ()) {
do {
try realm.write {
writeClosure()
}
} catch {
NSLog("Could not write to database: ", error)
}
}
}
Благодаря этому решению код выглядит намного чище, когда я хочу читать из области или писать в db:)
DatabaseManager.write(realm: realm) {
let queryResult = self.realm.objects(Cookies.self).filter("cookieId == %@", cookieId)
let cookie = queryResult.first
cookie?.expirationDate = expirationDate as NSDate?
}
Из документации Realm:
Вы, возможно, уже заметили, что мы инициализировали доступ к нашей переменной области, вызвав Realm (). Этот метод возвращает объект Realm, который отображается в файл с именем default.realm в папке «Документы» (iOS) или в папке «Поддержка приложений» (OS X) вашего приложения.
Каждый раз, когда вы взаимодействуете с файловой системой, вы рискуете столкнуться с ошибками, такими как проблемы с правами доступа или недостаточно места на диске. Успех не уверен.
Таким образом, если по какой-либо причине Realm не может создать или записать файл области, приведенные вами методы действительно вызовут исключение.