type the switch raw protocol not have enum does cannot ios objective-c uiwebview format-specifiers

ios - the - swift4 enum



Advertencia: Format especifica el tipo ''long'' pero el argumento tiene el tipo ''UIWebViewNavigationType''(tambiƩn ''enum UIWebViewNavigationType'') (1)

UIWebViewNavigationType se define como

typedef NS_ENUM(NSInteger, UIWebViewNavigationType) { // ... };

y NSInteger es int en plataformas de 32 bits y long en 64 bits. Por lo tanto, debe convertir el valor a long

NSLog(@"expected:%ld, got:%ld", (long)UIWebViewNavigationTypeLinkClicked, (long)navigationType);

para hacer que se compile sin advertencias (y funcione correctamente) en todos los casos.

Me preguntaba si alguien me puede ayudar con esta advertencia de error que estoy recibiendo en Xcode. Creo que tiene algo que ver con 32 v 64 bits. Me gustaría que el código funcione tanto en 32 como en 64 bits. La sección relevante del código es:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { NSLog(@"expected:%ld, got:%ld", (long)UIWebViewNavigationTypeLinkClicked, navigationType); NSLog(@"Main Doc URL:%@", [[request mainDocumentURL] absoluteString]); if (navigationType == UIWebViewNavigationTypeLinkClicked) { [[UIApplication sharedApplication] openURL:[request mainDocumentURL]]; return NO;

muchas gracias