Разбор iOS XCode: имена классов не могут начинаться с подчеркиванияIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Разбор iOS XCode: имена классов не могут начинаться с подчеркивания

Сообщение Anonymous »

Я получаю эту ошибку при инициализации Parse.
Скорее всего, это связано с тем, что я обновился до XCode версии 16.0 (16A242d). MacOS — 14,5 (23F79).
Я установил Parse как модуль. Также пытался удалить его и установить последнюю версию как зависимость от пакета, но та же ошибка.

Код: Выделить всё

[Parse initializeWithConfiguration:[ParseClientConfiguration configurationWithBlock:^(id
 configuration) {
configuration.applicationId = @"myAppId";
configuration.clientKey = nil;
configuration.server = @"myParseServerUrlStringHostedonHeroku";
}]];
Вот что я получаю, когда запускаю приложение: (При компиляции ошибок нет.)

Код: Выделить всё

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: Invalid class name. Class names cannot start with an underscore.'
*** First throw call stack:
(
0   CoreFoundation                      0x00000001804ae0f8 __exceptionPreprocess + 172
1   libobjc.A.dylib                     0x0000000180087db4 objc_exception_throw + 56
2   CoreFoundation                      0x00000001804ae008 -[NSException initWithCoder:] + 0
3   myApp.debug.dylib   0x0000000106d2f1f8 +[PFObject(Private) _assertValidInstanceClassName:] + 180
4   myApp.debug.dylib   0x0000000106d37598 -[PFObject init] + 436
5   myApp.debug.dylib   0x0000000106d37898 -[PFObject initWithObjectState:] + 92
6   myApp.debug.dylib   0x0000000106d379cc +[PFObject objectWithClassName:objectId:completeData:] + 248
7   myApp.debug.dylib   0x0000000106d37ae0 +[PFObject objectWithClassName:] + 80
8   myApp.debug.dylib   0x0000000106d37fcc +[PFObject object] + 252
9   myApp.debug.dylib   0x0000000106cf6bdc __56-[PFCurrentInstallationController getCurrentObjectAsync]_block_invoke.9 + 452
10  myApp.debug.dylib   0x0000000106a64f18 __62-[BFTask continueWithExecutor:successBlock:cancellationToken:]_block_invoke + 124
11  myApp.debug.dylib   0x0000000106a64848 __55-[BFTask continueWithExecutor:block:cancellationToken:]_block_invoke + 88
12  myApp.debug.dylib   0x0000000106a615c0 __29+[BFExecutor defaultExecutor]_block_invoke_2 + 152
13  myApp.debug.dylib   0x0000000106a61da0 -[BFExecutor execute:] + 88
14  myApp.debug.dylib   0x0000000106a64b24 __55-[BFTask continueWithExecutor:block:cancellationToken:]_block_invoke.15 + 44
15  myApp.debug.dylib   0x0000000106a642f4 -[BFTask runContinuations] + 508
16  myApp.debug.dylib   0x0000000106a63cd8 -[BFTask trySetResult:] + 208
17  myApp.debug.dylib   0x0000000106a65a50 -[BFTaskCompletionSource trySetResult:] + 88
18  myApp.debug.dylib   0x0000000106ce88fc __28-[PFAsyncTaskQueue enqueue:]_block_invoke_2 + 216
19  myApp.debug.dylib   0x0000000106a64848 __55-[BFTask continueWithExecutor:block:cancellationToken:]_block_invoke + 88
20  libdispatch.dylib                   0x00000001022cbec4 _dispatch_call_block_and_release + 24
21  libdispatch.dylib                   0x00000001022cd73c _dispatch_client_callout + 16
22  libdispatch.dylib                   0x00000001022d05a0 _dispatch_queue_override_invoke + 1320
23  libdispatch.dylib                   0x00000001022e136c _dispatch_root_queue_drain + 372
24  libdispatch.dylib                   0x00000001022e1f18 _dispatch_worker_thread2 + 256
25  libsystem_pthread.dylib             0x00000001022277d8 _pthread_wqthread + 224
26  libsystem_pthread.dylib             0x00000001022265d4 start_wqthread + 8
После отладки возникла проблема:
В PFObject:

Код: Выделить всё

+ (instancetype)object {
PFConsistencyAssert([self conformsToProtocol:@protocol(PFSubclassing)],
@"Can only call +object on subclasses conforming to PFSubclassing");
NSString *className = [(id
)self parseClassName];
Class class = [[self subclassingController] subclassForParseClassName:className] ?: [PFObject class];
return [class objectWithClassName:className];
}

Код: Выделить всё

NSString *className = [(id)self parseClassName];
в этой строке className выглядит как «_Installation», потому что в PFInstallation есть:

Код: Выделить всё

+ (NSString *)parseClassName {
return @"_Installation";
}
Кроме того, [[self subclassingController] subclassForParseClassName:className] возвращает ноль.
Потратил на это почти весь день без перерывов и разочарований . Все, в чем я сомневаюсь, это то, что подклассы не регистрируются в Parse->Core->PFObjectSubclassingController:

Код: Выделить всё

- (void)registerSubclass:(Class
)kls {
pf_sync_with_throw(_registeredSubclassesAccessQueue, ^{
[self _rawRegisterSubclass:kls];
});
}
что дает ноль в [[self subclassingController] subclassForParseClassName:className].
Пожалуйста, помогите! Отчаянно нуждающийся. Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/790 ... underscore
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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