ios - react - Parse v1.7.4 y Facebook SDK NSInvalidArgumentException '', razón:''+[NSData PF_dataFromBase64String:]: selector no reconocido enviado a la clase
install facebook sdk ios (1)
Recibo este error, después de actualizar tanto FB como Parse SDK
a las últimas versiones. Sé que esto ocurre en mi delegado de aplicación en el siguiente método.
Tengo una aplicación mixto rápida y objetiva, mi delegado está escrito en Objective C y mientras trabajo para la próxima versión, estoy convirtiendo y escribiendo nuevas clases en Swift. Si hago un comentario sobre el controlador a continuación, el error no ocurre, pero recibo un mensaje de error de inicio de sesión, que es lo que esperaría. Después de presionar el botón de inicio de sesión, aparece la página de Facebook para autorizar la aplicación y luego regresa al controlador de vista. Es en este momento cuando el método siguiente completa que ocurre el error.
Entiendo el significado de este error, ya que se llama a un selector a una clase que no lo tiene. El problema que tengo es que he comprobado que todos los marcos están presentes, y esta llamada parece estar sucediendo dentro de los SDK de PARSE o Facebook, por lo que no veo cómo rectificar esto. ¿Alguien puede ayudar en por qué esta llamada falla?
Muchas gracias.
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
NSLog(@"-------------------------end.of.application.FBSDKApplicationDelegate");
NSLog(@"facebook.Response=%@,url =%@,sourceApp= %@,annotation =%@",application,url,sourceApplication,annotation);
return [[FBSDKApplicationDelegate sharedInstance] application:application
openURL:url
sourceApplication:sourceApplication
annotation:annotation];
// return true;
}
Terminating app due to uncaught exception ''NSInvalidArgumentException'', reason: ''+[NSData PF_dataFromBase64String:]: unrecognized selector sent to class 0x11343ca48''
*** First throw call stack:
(
0 CoreFoundation 0x0000000113193c65 __exceptionPreprocess + 165
1 libobjc.A.dylib 0x0000000112e2cbb7 objc_exception_throw + 45
2 CoreFoundation 0x000000011319afad +[NSObject(NSObject) doesNotRecognizeSelector:] + 205
3 CoreFoundation 0x00000001130f113c ___forwarding___ + 988
4 CoreFoundation 0x00000001130f0cd8 _CF_forwarding_prep_0 + 120
5 Chored 0x000000010e2badf5 -[PFDecoder decodeDictionary:] + 658
6 Chored 0x000000010e2bb545 -[PFDecoder decodeObject:] + 130
7 Chored 0x000000010e2bb1b8 __30-[PFDecoder decodeDictionary:]_block_invoke + 94
8 CoreFoundation 0x0000000113192fbc ____NSDictionaryEnumerate_block_invoke421 + 28
9 CoreFoundation 0x0000000113092400 CFBasicHashApply + 128
10 CoreFoundation 0x00000001130cb85b __NSDictionaryEnumerate + 619
11 Chored 0x000000010e2bad5c -[PFDecoder decodeDictionary:] + 505
12 Chored 0x000000010e2bb545 -[PFDecoder decodeObject:] + 130
13 Chored 0x000000010e259631 -[PFCommandNetworkOperation _operationDidFinish] + 259
14 CFNetwork 0x000000011100c0bc __65-[NSURLConnectionInternal _withConnectionAndDelegate:onlyActive:]_block_invoke + 69
15 CFNetwork 0x000000011100c060 -[NSURLConnectionInternal _withConnectionAndDelegate:onlyActive:] + 199
16 CFNetwork 0x000000011100c1c7 -[NSURLConnectionInternal _withActiveConnectionAndDelegate:] + 48
17 CFNetwork 0x0000000110edb757 ___ZN27URLConnectionClient_Classic26_delegate_didFinishLoadingEU13block_pointerFvvE_block_invoke + 107
18 CFNetwork 0x0000000110fa8de1 ___ZN27URLConnectionClient_Classic18_withDelegateAsyncEPKcU13block_pointerFvP16_CFURLConnectionPK33CFURLConnectionClientCurrent_VMaxE_block_invoke_2 + 273
19 CFNetwork 0x0000000110ec6a26 _ZN19RunloopBlockContext13_invoke_blockEPKvPv + 72
20 CoreFoundation 0x000000011309a354 CFArrayApplyFunction + 68
21 CFNetwork 0x0000000110ec68e7 _ZN19RunloopBlockContext7performEv + 133
22 CFNetwork 0x0000000110ec6726 _ZN17MultiplexerSource7performEv + 256
23 CFNetwork 0x0000000110ec653c _ZN17MultiplexerSource8_performEPv + 72
24 CoreFoundation 0x00000001130c7431 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
25 CoreFoundation 0x00000001130bd2fd __CFRunLoopDoSources0 + 269
26 CoreFoundation 0x00000001130bc934 __CFRunLoopRun + 868
27 CoreFoundation 0x00000001130bc366 CFRunLoopRunSpecific + 470
28 CoreFoundation 0x000000011316a661 CFRunLoopRun + 97
29 Foundation 0x0000000112988383 __NSOQSchedule_f + 184
30 libdispatch.dylib 0x00000001141f2614 _dispatch_client_callout + 8
31 libdispatch.dylib 0x00000001141d96a7 _dispatch_queue_drain + 2176
32 libdispatch.dylib 0x00000001141d8cc0 _dispatch_queue_invoke + 235
33 libdispatch.dylib 0x00000001141dc3b9 _dispatch_root_queue_drain + 1359
34 libdispatch.dylib 0x00000001141ddb17 _dispatch_worker_thread3 + 111
35 libsystem_pthread.dylib 0x000000011455f637 _pthread_wqthread + 729
36 libsystem_pthread.dylib 0x000000011455d40d start_wqthread + 13
)
libc++abi.dylib: terminating with uncaught exception of type NSException
El problema no es tuyo Fue creado por la versión 1.7.4. Yo también lo enfrenté. Esta solución temporal es una categoría en NSData que proporciona los selectores faltantes. Aquí está un encabezado, NSData+PFData.h
:
@import Foundation;
@interface NSData (PFData)
+ (NSData *) PF_dataFromBase64String: (NSString *) base64;
- (NSString *) PF_base64EncodedString;
@end
Implementación NSData+PFData.m
:
#import "NSData+PFData.h"
@implementation NSData (PFData)
+ (NSData *) PF_dataFromBase64String: (NSString *) base64 {
return [NSData.alloc initWithBase64EncodedString: base64 options: 0];
} // +PF_dataFromBase64String:
- (NSString *) PF_base64EncodedString {
return [self base64EncodedStringWithOptions: 0];
} // -PF_base64EncodedString
@end
Debería planear eliminar esta categoría cuando ya no sea necesaria, digamos con Parse v1.7.5.