Журнал сбоев Firebase в iOS: objc Throw Handler (тип, файл, функция, строка, сообщение) ⇐ IOS
Журнал сбоев Firebase в iOS: objc Throw Handler (тип, файл, функция, строка, сообщение)
Я отправляю свое приложение для 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.
А что касается чтения журнала сбоев, в Интернете мало ссылок, более того, он отлично работает на моем телефоне, я не могу проверить отладку или сделать что-то еще..
Можете ли вы мне помочь, как мне исправить эту ошибку?
Если какой-либо совет будет полезен..
Я отправляю свое приложение для 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.
А что касается чтения журнала сбоев, в Интернете мало ссылок, более того, он отлично работает на моем телефоне, я не могу проверить отладку или сделать что-то еще..
Можете ли вы мне помочь, как мне исправить эту ошибку?
Если какой-либо совет будет полезен..
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
У меня есть журнал сбоев iOS, я использую Windows и не могу его прочитать.
Anonymous » » в форуме IOS - 0 Ответы
- 23 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как я могу найти журнал сбоев с устройства iOS и загрузить его на свой сервер из приложения?
Anonymous » » в форуме IOS - 0 Ответы
- 12 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как я могу найти журнал сбоев с устройства iOS и загрузить его на свой сервер из приложения?
Anonymous » » в форуме IOS - 0 Ответы
- 12 Просмотры
-
Последнее сообщение Anonymous
-