测试已测试 | ✗ |
语言语言 | Obj-CObjective C |
许可证 | MIT |
发布最后发布 | 2015年12月 |
由Paul Evans维护。
依赖项 | |
PEObjc-Commons | ~> 1.0.89 |
PESimu-Select | ~> 1.0.4 |
PEDev-Console是一个iOS静态库,用于简化iOS应用程序的开发过程。它提供了一种可以集成到您应用程序中的视图控制器,让您可以瞬间跳转到应用程序的任何屏幕。它还包括PESimu-Select的功能,以实现HTTP响应模拟。
PEDev-Console是PE* iOS Library Suite的一部分。
目录
在开发iOS应用程序时,尤其是视图控制器的开发,往往具有特别痛苦和迭代的特点。当以编程方式(即不使用界面构建器)开发视图时,这种情况更为突出。能够快速看到您的代码更改结果对于提高开发效率非常重要。
你可能会发现自己正忙于应用程序中的一个特定屏幕,该屏幕深深埋藏在许多其他屏幕之下。测试该屏幕的更改通常需要运行应用程序并手动导航到该屏幕。如果上面的屏幕需要填写表格等内容,则工作流程会很快变得缓慢而繁琐。
PEDev-Console试图解决这个问题。想法很简单:在应用程序启动后,摇晃您的设备。PEDev-Console开发控制台将出现,给出一个选择来查看应用程序中包含的所有屏幕。只需轻触您想要查看的屏幕,它就会被实例化并展示出来。作为额外的好处,从开发控制台中您还可以(如果已配置)选择一个HTTP响应模拟来激活(由PESimu-Select集成提供)。
让您的应用程序代理遵从PDVDevEnabled协议。
#import "PDVDevEnabled.h"
@interface AppDelegate : UIResponder <UIApplicationDelegate, PDVDevEnabled>
此步骤是为了启用PESimu-Select功能。创建一个名为application-screens的文件夹。在该文件夹中,为您的应用程序中的每个屏幕创建一个子文件夹,其中您想要集成PESimu-Select功能。在屏幕文件夹中为每个支持的用例创建一个文件夹。对于每个用例文件夹,为每个您希望测试的HTTP响应场景创建一个PESimu-Select模拟XML文件。下面的截图显示了PEDev-Console演示应用程序的文件夹设置
在您的应用程序代理中声明一个类级别的PDVUtils实例
@implementation AppDelegate {
PDVUtils *_pdvUtils;
}
在您的应用程序代理中,除了实例化UIWindow
之外,请使用PDVUIWindow
。还要实例化您自己的_pdvUtils
实例(确保提供您的基屏幕文件夹的正确名称)
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[self setWindow:[[PDVUIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]];
_pdvUtils = [[PDVUtils alloc] initWithBaseResourceFolderOfSimulations:@"application-screens"
screenGroups:[self screenGroups]];
在您的应用程序代理中实现screenGroups
获取器
- (NSArray *)screenGroups {
NSArray *unauthenticatedScreens =
@[ // Create Account screen
[[PDVScreen alloc] initWithDisplayName:@"Create Account"
description:@"Create Account screen."
viewControllerMaker:^{return
[[PDVCreateAccountController alloc] init];}],
// Login screen
[[PDVScreen alloc] initWithDisplayName:@"Log In"
description:@"Log In screen."
viewControllerMaker:^{return [[PDVLoginController alloc] init];}]];
PDVScreenGroup *unauthenticatedScreenGroup =
[[PDVScreenGroup alloc] initWithName:@"Unauthenticated Screens"
screens:unauthenticatedScreens];
NSArray *authenticatedScreens =
@[ // Authenticated landing screen
[[PDVScreen alloc] initWithDisplayName:@"Authenticated Landing"
description:@"Authenticated landing screen of pre-existing user with resident auth token."
viewControllerMaker:^{return [[PDVAuthenticatedLandingController alloc] init];}]];
PDVScreenGroup *authenticatedScreenGroup =
[[PDVScreenGroup alloc] initWithName:@"Authenticated Screens"
screens:authenticatedScreens];
return @[ unauthenticatedScreenGroup, authenticatedScreenGroup ];
}
这里发生的事情是这样的,对于您应用程序中的每个屏幕,您将创建一个PDVScreen
实例作为某种容器的。这些PDVScreen
实例由PEDev-Console的屏幕选择视图控制器使用。每个PDVScreen
实例都分配一个带签名的块(UIViewController *(^)(void)
),该块用于在用户从屏幕选择控制器中选择它时实例化视图控制器。您还需要将每个PDVScreen
实例分组在一个PDVScreenGroup
实例中。PDVScreenGroup
的目的是为您提供一种将逻辑相关的屏幕分组的机制。然后,这些组用于创建PEDev-Console屏幕选择控制器表格视图的表格部分。
接下来,在我们的应用程序代理中,我们实现了来自PDVDevEnabled
协议的2个方法
- (PDVUtils *)pdvUtils {
return _pdvUtils;
}
- (NSDictionary *)screenNamesForViewControllers {
return @{
NSStringFromClass([PDVCreateAccountController class]) : @"create-account-screen",
NSStringFromClass([PDVLoginController class]) : @"login-screen",
NSStringFromClass([PDVAuthenticatedLandingController class]) : @"authenticated-landing-screen"
};
}
screenNamesForViewControllers
的目的是将您应用程序视图控制器的类映射到它们相应PESimu-Select HTTP响应模拟文件夹。
最后,在您的每个应用程序视图控制器中,包含以下导入
#import "UIViewController+PEDevConsole.h"
并在您的viewDidLoad
方法中包含以下行
// enables PEDev-Console integration
[self pdvDevEnable];
通过这样做,设备简单摇晃即可启动开发控制台。
以下是从DemoApp获取的。DemoApp有一个初始启动屏幕,和3个应用程序屏幕(登录、创建账户和认证主页)。有趣的是,从启动屏幕无法访问应用程序的任何屏幕 :)
首先,我们启动应用程序。
摇晃设备将显示开发控制台屏幕。
从这里,我们有2个基本选项:获取我们应用程序屏幕的列表,或显示HTTP响应模拟(PESimu-Select)的列表。如果我们点击查看我们应用程序的屏幕,我们将得到
在这里我们看到我们的3个应用程序屏幕,组织成2个组。我们将点击“创建账户”来启动该屏幕。
咦!让我们再摇晃一次,这次点击查看可用的HTTP响应模拟集
现在让我们假设我们点击了屏幕选择器中的“登录”行。我们看到应用程序的登录屏幕
摇晃并点击查看我们的HTTP响应模拟,我们可以得到
注意,可用的HTTP响应模拟集是基于我们当前的屏幕——登录屏幕的。
demoApp是一个演示如何使用PEDev-Console的工作应用程序。
(每个库都作为CocoaPod启用的iOS静态库实现。)