【发布时间】:2012-03-22 21:13:57
【问题描述】:
AuthNet 和 PayPal 移动支付库都定义了 ENV_LIVE 枚举器。这会导致 Xcode 错误,例如:
Redefinition of enumerator 'ENV_LIVE' ...
在这种情况下,不能简单地更改依赖框架的源代码,objective-c 语法或 xcode 配置中有哪些可用的解决方法?
最初:
#import "PayPal.h"
#import "AuthNet.h"
...
// AuthNet
[AuthNet authNetWithEnvironment:ENV_TEST];
// PayPal
if (STATUS_COMPLETED_SUCCESS == [PayPal initializationStatus]) {
[PayPal initializeWithAppID:@"APP-XXX" forEnvironment:ENV_SANDBOX];
}
更新(这是我根据正确答案最终使用的解决方法):
#import "PayPal.h"
@class AuthNet;
#import "AuthNetWorkaround.h"
...
[AuthNet authNetWithEnvironment:AUTHNET_ENV_TEST];
extern const int AUTHNET_ENV_LIVE;
extern const int AUTHNET_ENV_TEST;
@interface AuthNetWorkaround : NSObject
@end
#import "AuthNetWorkaround.h"
#import "AuthNet.h"
@implementation AuthNetWorkaround
const int AUTHNET_ENV_LIVE = ENV_LIVE;
const int AUTHNET_ENV_TEST = ENV_TEST;
@end
【问题讨论】:
-
在同一个 .m 文件中包含两个框架的标头时是否看到错误?
-
是的,在同一个文件中 - appdelegate - 我实际上需要初始化这两个库并连接到 live 或 prod 服务器。
标签: objective-c paypal xcode4.2