Журнал сбоев Firebase в iOS: objc Throw Handler (тип, файл, функция, строка, сообщение)IOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Журнал сбоев Firebase в iOS: objc Throw Handler (тип, файл, функция, строка, сообщение)

Сообщение Anonymous »


Я отправляю свое приложение для iOS в Apple Store Connect.

И он отклоняется вместе с файлом журнала сбоев.

Когда я запускаю это приложение на своем реальном телефоне, оно работает нормально, даже та часть, о которой говорят, что оно дает сбой, работает хорошо.

Я открываю журнал сбоев, и кажется, что fireStore вызывает ошибку.

2 файла, которые они мне прислали, приведены ниже.

1)

#include "Firestore/core/src/util/Exception_apple.h" #import #include #include "Firestore/core/src/util/hard_assert.h" #include "Firestore/core/src/util/string_apple.h" NS_ASSUME_NONNULL_BEGIN пространство имен Firebase { пространство имен Firestore { пространство имен util { пространство имен { NSString* ExceptionName (исключение ExceptionType) { переключатель (исключение) { случай ExceptionType::AssertionFailure: return @"ВНУТРЕННЕЕ УТВЕРЖДЕНИЕ FIRESTORE FAILED"; случай ExceptionType::IllegalState: return @"FIRIllegalStateException"; случай ExceptionType::InvalidArgument: return @"FIRInvalidArgumentException"; } НЕДОСТИЖИМО(); } NSException* MakeException(тип ExceptionType, const std::string& message) { return [[NSException alloc] initWithName:ExceptionName(type) причина: MakeNSString (сообщение) информация пользователя: ноль]; } } // пространство имен ABSL_ATTRIBUTE_NORETURN void ObjcThrowHandler (тип ExceptionType, файл const char*, константа char* функция, внутренняя линия, const std::string& message) { if (type == ExceptionType::AssertionFailure) { [[NSAssertionHandler currentHandler] handleFailureInFunction: MakeNSString (функция) файл: MakeNSString (файл) lineNumber:строка описание:@"%@: %@", ExceptionName(тип), MakeNSString(сообщение)]; станд::прервать(); } еще { @throw MakeException (тип, сообщение); // НОЛИНТ } } } // использование пространства имен } // Firestore пространства имен } // Firebase пространства имен NS_ASSUME_NONNULL_END 2)

#include "Firestore/core/src/util/Exception.h" #include #include #include "Firestore/core/src/util/firestore_Exceptions.h" #include "Firestore/core/src/util/hard_assert.h" #include "Firestore/core/src/util/log.h" #include "absl/strings/str_cat.h" пространство имен Firebase { пространство имен Firestore { пространство имен util { пространство имен { const char* ExceptionName (исключение ExceptionType) { переключатель (исключение) { случай ExceptionType::AssertionFailure: return «ВНУТРЕННЕЕ УТВЕРЖДЕНИЕ FIRESTORE FAILED»; случай ExceptionType::IllegalState: вернуть «Нелегальное состояние»; случай ExceptionType::InvalidArgument: вернуть «Неверный аргумент»; } НЕДОСТИЖИМО(); } ABSL_ATTRIBUTE_NORETURN void DefaultThrowHandler (тип ExceptionType, файл const char*, константа char* функция, внутренняя линия, const std::string& message) { std::string What = absl::StrCat(ExceptionName(type), ": "); если (файл && функция) { absl::StrAppend(&what, file, "(", line, ") ", func, ": "); } absl::StrAppend(&что, сообщение); // Всегда регистрируйте ошибку — это помогает, если есть какие-либо проблемы с исключением // механизм распространения, а также гарантирует, что исключение попадет в // журнал независимо от того, как он обрабатывается. LOG_ERROR("%s", что); #if ABSL_HAVE_EXCEPTIONS переключатель (тип) { случай ExceptionType::AssertionFailure: бросить FirestoreInternalError (что); случай ExceptionType::IllegalState: // Опускаем описательный текст, поскольку тип уже кодирует тип ошибки. бросить std::logic_error(сообщение); случай ExceptionType::InvalidArgument: // Опускаем описательный текст, поскольку тип уже кодирует тип ошибки. бросить std::invalid_argument(сообщение); } #еще станд::прервать(); #endif НЕДОСТИЖИМО(); } ThrowHandler throw_handler = DefaultThrowHandler; } // пространство имен ThrowHandler SetThrowHandler (обработчик ThrowHandler) { ThrowHandler предыдущий = throw_handler; throw_handler = обработчик; вернуть предыдущее; } ABSL_ATTRIBUTE_NORETURN void Throw (исключение ExceptionType, файл const char*, константа char* функция, внутренняя линия, константный станд::строка& сообщение) { throw_handler (исключение, файл, функция, строка, сообщение); // Ожидается, что приведенный выше обработчик throw не вернет результат. Если это так, // просто завершить работу. станд::прервать(); } } // использование пространства имен } // Firestore пространства имен } // Firebase пространства имен Из той части, которая, по их словам, вызывает ошибку в моем приложении, используйте только одну строку FireBase.

ref.read(userProvider).when( данные: (данные) { вернуть контейнер( ширина: 35, рост: 35, украшение: const BoxDecoration( форма: BoxShape.круг, ), клипПоведение: Клип.hardEdge, дочерний элемент: Image.network( данные.аватар, подходит: BoxFit.чехол, ), ); }, загрузка: () => Контейнер(), ошибка: (ошибка, stackTrace) => Контейнер(), ) И userProvider riverpod выглядит следующим образом:

class UserProvider расширяет AsyncNotifier { поздний финальный AuthenticationRepository _authRepo; @переопределить FutureOr build() async { состояние = const AsyncValue.loading(); _authRepo = ref.read(authRepo); UserProfile userProfile = ждут fetchLoggedUserInfo(); состояние = AsyncValue.data(userProfile); вернуть профиль пользователя; } Future fetchLoggedUserInfo() async { состояние = const AsyncValue.loading(); Карта? userData = ждут _authRepo.fetchLoggedUserInfoDB(); UserProfile userProfile = UserProfile.fromJson(userData!); состояние = AsyncValue.data(userProfile); вернуть профиль пользователя; } } окончательный userProvider = AsyncNotifierProvider( () => ПользовательскийПоставщик(), ); Поскольку я обрабатываю ошибку с помощью метода when, я не знаю, почему в этой части приложение вылетает из FireStore.

А что касается чтения журнала сбоев, в Интернете мало ссылок, более того, он отлично работает на моем телефоне, я не могу проверить отладку или сделать что-то еще..

Можете ли вы мне помочь, как мне исправить эту ошибку?

Если какой-либо совет будет полезен..
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»