Обе библиотеки мобильных платежей 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