Не удалось загрузить NIB в пакет — пакет еще не загружен

Просто столкнулся с проблемой, когда мне нужно работать с внешней структурой и пакетом.

В то время как фрейм импортирован и его функции могут быть вызваны просто отлично, один из его методов пытается загрузить перо из сопровождающего пакета, который заканчивается на NSInternalInconsistencyException по причине

«Не удалось загрузить NIB в комплекте».

Я заметил, что, хотя пакет находится в ресурсах копирования пакетов и его можно найти, вызвав Bundle.allBundles, в сообщении об ошибке говорится, что это пакет "not yet loaded". Есть ли что-то, что я должен был сделать, чтобы пакет мог быть загружен заранее?

Обновление: ранее я не предоставлял соответствующий код, поскольку ошибка возникла как побочный эффект вызова фреймворка, поэтому я точно не знаю, как "загружается" перо. Сам код такой:

if let request = AUTRequest.init(transactionType: .debitGeneric) {
    AUTCTFClient.executeTransaction(with: request, from: self) { (_response) in
       if let response = _response {
           print(response)
       }
    }
}

self — это текущий контроллер представления, и ошибка возникает после вызова executeTransaction, но до выполнения блока ответа.

Это как-то связано с тем, что Bundle не загружается, или виноват сам фреймворк?


person Thiago Jordani    schedule 07.08.2018    source источник
comment
Не могли бы вы предоставить код, вызвавший эту проблему?   -  person Kien Tran    schedule 07.08.2018
comment
@KienTran обновил вопрос для лучшего понимания   -  person Thiago Jordani    schedule 07.08.2018


Ответы (2)


Если вы используете код для загрузки пера, вам нужно убедиться, что вы загружаете его из правильного пакета:

let bundle = Bundle(for: ClassName.self)
let view = bundle.loadNibNamed("nib_name", owner: nil, options: nil)![0]

Если вы используете раскадровку, обязательно выберите правильный модуль (фреймворк). Вы можете выбрать модуль в Identity Inspector (в конструкторе интерфейсов нажмите cmd+alt+3).

person ukim    schedule 07.08.2018
comment
Я обновил вопрос для лучшего понимания, так как я не пытаюсь загрузить перо самостоятельно. - person Thiago Jordani; 07.08.2018

После некоторого времени попыток найти решения наиболее очевидным ответом является то, что рассматриваемая структура была скомпилирована с отсутствующими файлами, которые «AUTCTFClient.executeTransaction» пытается вызвать при своем выполнении. Этот момент «подтверждается» более старыми версиями фреймворка, показывающими своего рода представление о ходе выполнения. (но, к сожалению, в нашем случае их нельзя было использовать)

Если вы каким-то образом столкнулись с этой проблемой, вероятно, будет лучше попросить владельцев (или поискать) обновленную или стабильную версию их фреймворка.

person Thiago Jordani    schedule 13.11.2018