2017-10-04 15 views
0

私はobj-cを使い慣れていないので、正方形のconnect libのCordovaプラグインを作成しようとしています。obj-cのクラスメソッドを呼び出すときにエラーが発生しました

クラスSCCAPIRequestのインスタンスを作成しようとしています。 私はエラーを取得する:ここで

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

は私の関数は、事前に

- (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]; 
} 

感謝です!

答えて

0

エラーログには、知る必要があることがすべて記載されています。メソッド'requestWithCallbackURL:amount:locationID:notes:metadata:supportedTenderTypes:error:'はありません。存在しないinitメソッドをSCCAPIRequestと呼んでいます。

このクラスのinitメソッドをヘッダファイル、特に:https://github.com/square/SquarePointOfSaleSDK-iOS/blob/master/Sources/SCCAPIRequest.hにチェックアウトする場合は、使用できる2つの異なるinitメソッドがあります。

+ (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."); 

SCCAPIRequestのインスタンスを正しく作成するには、そのうちの1つを使用してください。

+0

「init」メソッドの使用方法に関するチュートリアルを教えてください。私が言ったように、私はobj-cの新人です。 –

+0

こんにちは@DanielCuesta、上記のコードは、 'SCCAPIRequest'の新しいインスタンスを作成するときに呼び出す関数です。 'SCCAPIRequest * request = [SCCAPIRequest ...... lalala]' – Glenn

+0

私はコンパイルできましたが、エラーが発生しました。 'SCCAPIRequest encodeWithCoder:]:インスタンスに送られた認識できないセレクター' –

関連する問題