2017-09-23 50 views
3

我得到我的BTAPIClient.m文件一個新的錯誤,因爲我升級到Xcode的9布倫特裏錯誤和Xcode 9

的@defaultFirst變量觸發以下錯誤:

對象鍵入'NSNumber *'與字典值 類型'NSString *'不兼容。

它發生在下面的代碼行:parameters:@{@"default_first": @(defaultFirst)}

我無法找到任何其他記錄這個錯誤。我沒有修改任何代碼,這是一個新鮮的Cocoapods安裝。

- (void)fetchPaymentMethodNonces:(BOOL)defaultFirst completion:(void (^)(NSArray <BTPaymentMethodNonce *> *, NSError *))completion { 
if (!self.clientToken) { 
NSError *error = [NSError errorWithDomain:BTAPIClientErrorDomain code:BTAPIClientErrorTypeNotAuthorized userInfo:@{ NSLocalizedDescriptionKey : @"Cannot fetch payment method nonces with a tokenization key", NSLocalizedRecoverySuggestionErrorKey : @"This endpoint requires a client token for authorization"}]; 
    if (completion) { 
     completion(nil, error); 
    } 
    return; 
} 

[self GET:@"v1/payment_methods" 
     parameters:@{@"default_first": @(defaultFirst), 
         @"session_id": self.metadata.sessionId} 
     completion:^(BTJSON * _Nullable body, __unused NSHTTPURLResponse * _Nullable response, NSError * _Nullable error) { 
      dispatch_async(dispatch_get_main_queue(), ^{ 
       if (completion) { 
        if (error) { 
         completion(nil, error); 
        } else { 
         NSMutableArray *paymentMethodNonces = [NSMutableArray array]; 
         for (NSDictionary *paymentInfo in [body[@"paymentMethods"] asArray]) { 
          BTJSON *paymentInfoJSON = [[BTJSON alloc] initWithValue:paymentInfo]; 
          BTPaymentMethodNonce *paymentMethodNonce = [[BTPaymentMethodNonceParser sharedParser] parseJSON:paymentInfoJSON withParsingBlockForType:[paymentInfoJSON[@"type"] asString]]; 
          if (paymentMethodNonce) { 
           [paymentMethodNonces addObject:paymentMethodNonce]; 
          } 
         } 
         completion(paymentMethodNonces, nil); 
        } 
       } 
      }); 
}]; 

回答

2

我在使用Cocoapods的項目中遇到同樣的問題。

確保你沒有更新你的依賴:

  • 密切的Xcode
  • 明確艙體文件夾
  • 運行pod install不是update
  • 構建
+0

謝謝!我還聯繫了Braintree,他們能夠複製錯誤並承諾儘快發佈修復 –