Я столкнулся с отсутствующим списком контактов (xmppRoster) и заметил, что при попытке установить точку останова / отладки обнаружил nil для объекта XMPPUserCoreDataStorageObject
.Просматривая мой код всякий раз, когда есть значение nil, условие не будет выполнено и перейдет к «[Недоступно]».
Я отказываюсь принять это, потому что это будет плохой пользовательский опыт, если список контактов отсутствует и имя группы / пользователя отображается [Недоступно] ". Иногда это может происходить во время простоя или в фоновом режиме.
let contact = appDelegate.xmppRosterStorage.user(for: userJID, xmppStream: appDelegate.xmppStream, managedObjectContext: appDelegate.managedObjectContext_roster())
if contact?.nickname != nil {
self.navigationItem.titleView = self.setTitle(title: (contact?.nickname)! , subtitle: "Tap to view group details")
}
else {
if(appDelegate.xmppRoom.roomJID.user.contains("----")) {
self.navigationItem.title = (appDelegate.xmppRoom.roomJID.user.components(separatedBy: ".")[1])+"@---"
}
else {
if(tempGroupTitle != nil) {
self.navigationItem.titleView = self.setTitle(title: tempGroupTitle , subtitle: "Tap to view group details")
}
else {
let naString = "[Not Available]"
self.navigationItem.titleView = self.setTitle(title: naString , subtitle: "Tap to view group details")
}
}
}
Я пытался использовать блок try catch
if contact == nil {
do {
try! fetchedResultsController.performFetch()
}
catch {
// print(error.localizedDescription)
}
}
, но, похоже, он не работает. Надеюсь, кто-то может дать мне хорошую рукуэто. Спасибо!