有時候測試要經常切換內網外網,查看數據,為了方便測試,寫一個功能,在DeBug模式下只要一個按鈕就可以一鍵切換內網外網。
效果圖
拓展功能類
- 直接上代碼
*** ChangeServer.h***
#import <Foundation/Foundation.h>
@interface ChangeServer : NSObject
+ (void)changeServer:(int)serverName;
+ (NSString *)baseUrl;
+ (NSString *)imageRootUrl;
@end
*** ChangeServer.m***
#import "ChangeServer.h"
@implementation ChangeServer
static int indexServer = 0;
+ (void)changeServer:(int)serverName {
indexServer = serverName;
}
+ (NSString *)baseUrl {
static NSArray *array = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
array = @[@"http://正式服地址",
@"http://測試服地址",
@"http://本地測試地址"
];
});
return array[indexServer];
}
+ (NSString *)imageRootUrl {
static NSArray *array = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
array = @[@"http://正式服地址",
@"http://測試服地址",
@"http://本地測試地址"
];
});
return array[indexServer];
}
@end
用法實例
- 在定義基地址的地方
#define BASE_URL [ChangeServer baseUrl]
#define IMAGE_ROOT_URL [ChangeServer imageRootUrl]
- 在設置頁面的導航條右側---添加一個按鈕一鍵切換內外網
#ifdef DEBUG
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"切服地址" style:UIBarButtonItemStylePlain target:self action:@selector(changeServer)];
#endif
- 在.pch文件添加頭文件
#import "ChangeServer.h"
- (void)changeServer {
NSArray *title = @[@"正式",@"測試服",@"本地測試"];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"請選擇要切換的服務器地址" delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:nil, nil];
// 遵守協議:UIAlertViewDelegate
alert.delegate = self;
for(NSString* t in title)
{
[alert addButtonWithTitle:t];
}
[alert show];
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
if (buttonIndex != alertView.cancelButtonIndex) {
[ChangeServer changeServer:(int)buttonIndex-1];
}
}