Как устранить ошибки «переопределения перечислителя» из отдельных фреймворков objc

Обе библиотеки мобильных платежей 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
5
задан pulkitsinghal 25 March 2012 в 01:51
поделиться