iOS XMMPFramework - иногда XMPPUserCoreDataStorageObject равен nil - PullRequest
0 голосов
/ 12 декабря 2018

Я столкнулся с отсутствующим списком контактов (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)
    }
}

, но, похоже, он не работает. Надеюсь, кто-то может дать мне хорошую рукуэто. Спасибо!

...