2017-10-04 4 views
0

Je suis nouveau sur obj-c et j'essaye de créer un plugin Cordova pour la librairie square connect. J'essaye de créer une instance de la classe SCCAPIRequestErreur lors de l'appel de la méthode de classe dans obj-c

mais je reçois une erreur:

error: no known class method for selector 
    'requestWithCallbackURL:amount:locationID:notes:metadata:supportedTenderTypes:error:' 

Voici ma fonction

- (void)requestCharge: (CDVInvokedUrlCommand *)command { 
int amount = [[command.arguments objectAtIndex: 0] intValue]; 
NSDictionary* options = [command.arguments objectAtIndex: 1]; 

CDVPluginResult *pluginResult; 

if(amount < 0 || amount == 0) { 
NSLog(@"Error: Ammount to charge is 0"); 
NSString *errorResponse = @"Error: Ammount to charge is 0"; 
pluginResult = [CDVPluginResult 
resultWithStatus:CDVCommandStatus_ERROR messageAsString:errorResponse]; 
} 

[self setOptions:options]; 

NSError *error = nil; 
SCCAPIRequest *request = [SCCAPIRequest requestWithCallbackURL:[NSURL 
URLWithString:yourCallbackURLString] 
             amount:amount 
           locationID:self.locationID 
             notes:self.note 
            metadata:self.metadata 
           supportedTenderTypes:self.tenders 
             error:&error]; 


NSData *response = [NSKeyedArchiver archivedDataWithRootObject:request]; 

if(error) { 
    pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR 
    messageAsArrayBuffer:response]; 
} else { 
pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK 
    messageAsArrayBuffer:response]; 
} 

[self.commandDelegate sendPluginResult:pluginResult 
callbackId:command.callbackId]; 
} 

Merci à l'avance!

Répondre

0

Le journal des erreurs indique tout ce que vous devez savoir. Il n'y a pas de méthode 'requestWithCallbackURL:amount:locationID:notes:metadata:supportedTenderTypes:error:'. Vous appelez une méthode init non existante de SCCAPIRequest.

Si vous souhaitez extraire les méthodes init de cette classe dans son fichier d'en-tête, plus précisément sur ce lien: https://github.com/square/SquarePointOfSaleSDK-iOS/blob/master/Sources/SCCAPIRequest.h, vous verrez deux méthodes d'initialisation différentes que vous pouvez utiliser.

+ (nullable instancetype)requestWithCallbackURL:(nonnull NSURL *)callbackURL 
             amount:(nonnull SCCMoney *)amount 
           userInfoString:(nullable NSString *)userInfoString 
            locationID:(nullable NSString *)locationID 
              notes:(nullable NSString *)notes 
            customerID:(nullable NSString*)customerID 
          supportedTenderTypes:(SCCAPIRequestTenderTypes)supportedTenderTypes 
           clearsDefaultFees:(BOOL)clearsDefaultFees 
       returnAutomaticallyAfterPayment:(BOOL)autoreturn 
              error:(out NSError *__nullable *__nullable)error; 

+ (nullable instancetype)requestWithCallbackURL:(nonnull NSURL *)callbackURL 
             amount:(nonnull SCCMoney *)amount 
           userInfoString:(nullable NSString *)userInfoString 
            merchantID:(nullable NSString *)merchantID 
              notes:(nullable NSString *)notes 
            customerID:(nullable NSString*)customerID 
          supportedTenderTypes:(SCCAPIRequestTenderTypes)supportedTenderTypes 
           clearsDefaultFees:(BOOL)clearsDefaultFees 
       returnAutomaticallyAfterPayment:(BOOL)autoreturn 
              error:(out NSError *__nullable *__nullable)error __deprecated_msg("Use requestWithCallbackURL:amount:userInfoString:locationID:notes:customerID:supportedTenderTypes:clearsDefaultFees:returnAutomaticallyAfterPayment:error: instead."); 

Il faut donc utiliser un de ceux pour faire correctement une instance de SCCAPIRequest.

+0

Pourriez-vous me montrer un tutoriel sur l'utilisation des méthodes 'init'? Comme je l'ai dit je suis nouveau à obj-c. –

+0

Bonjour @DanielCuesta, les codes que j'ai affichés ci-dessus sont la fonction que vous appelez lorsque vous créez une nouvelle instance de 'SCCAPIRequest'. Vous venez de l'appeler comme ce que vous avez fait ci-dessus: 'SCCAPIRequest * request = [SCCAPIRequest ...... lalala]' – Glenn

+0

J'ai pu compiler, mais j'ai une erreur 'SCCAPIRequest encodeWithCoder:]: sélecteur non reconnu envoyé à l'instance ' –