PEDev-Console 1.0.5

PEDev-Console 1.0.5

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最后发布2015年12月

Paul Evans维护。



 
依赖项
PEObjc-Commons~> 1.0.89
PESimu-Select~> 1.0.4
 

  • Paul Evans

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的工作应用程序。

PE* iOS库套件

(每个库都作为CocoaPod启用的iOS静态库实现。)