iTaTools:让Xcode开发更高效

发布时间:2024-07-25 18:03:44 浏览量:246次

0.背景

在日常开发中,重复劳动降低了效率。去年ChatGPT推出后,为我们提供了比谷歌和Github更好的代码咨询小助手。但是使用它也需要准备“环境”,然后在浏览器中提问,复制粘贴至Xcode中。为了提高效率,提出了开发Xcode插件结合AIGC能力,于是诞生了iTaTools。

1.成果

1.1 Mac端AIGC小工具

iTaTools是一款独立的Mac端App,旨在辅助团队成员学习Swift和SwiftUI,构建喜爱的功能。用户界面如下:

Mac端iTaTools App

该App主要与AIGC结合,第一个Tab可向ChatGPT提问,第二个Tab可进行文生图操作,第三个Tab汇总了实用工具和技巧。

iTaTools界面

1.2 Xcode插件

Xcode插件

目前制作了四个小插件,包括直接生成代码、生成Json假数据对应的业务模型、添加官方风格注释、选中代码块的解释。

  • 直接生成代码
  • 生成Json假数据对应的业务模型
  • 添加官方风格注释
  • 选中代码块的解释

1.3 iOS自动生成UI代码

iTaTools还支持根据需求自动生成UI,团队使用Objective-C或Swift构建UI,使用SnapKit/Masonry生成自动布局代码,遵循统一的日夜间生成方式。

开发人员可以根据输入生成可直接使用的代码。以下是生成的代码案例。

    根据您的描述,我将为您生成Objective-C的代码:        // NTESNBLoginHeader.h    #import <UIKit/UIKit.h>        @interface NTESNBLoginHeader : UIView        @property (nonatomic, strong) UILabel *username;    @property (nonatomic, strong) UILabel *password;    @property (nonatomic, strong) UIImageView *avatar;        - (void)updateUsername:(NSString *)username;    - (void)updatePassword:(NSString *)password;    - (void)updateAvatar:(UIImage *)avatar;        @end        // NTESNBLoginHeader.m    #import "NTESNBLoginHeader.h"    #import <Masonry/Masonry.h>        @implementation NTESNBLoginHeader        - (instancetype)init {        self = [super init];        if (self) {            [self addSubview:self.username];            [self addSubview:self.password];            [self addSubview:self.avatar];            [self setupLayout];        }        return self;    }        - (UILabel *)username {        if (!_username) {            _username = [[UILabel alloc] init];            _username.textAlignment = NSTextAlignmentCenter;            _username.numberOfLines = 0;            _username.textColor = [UIColor blackColor];            _username.font = [UIFont systemFontOfSize:14];        }        return _username;    }        // 更多代码...        @end    

2.实现原理

2.1 AIGC API的使用

项目使用ChatGPT提供的API,开发者根据接口文档调整API请求,按照最新文档操作。以下是Swift生成的ChatGPT请求头:

2.1.1 请求头

    // Swift代码示例    // 创建通用请求Header,授权每次的API请求    public func signedHeaders(appId: String, appKey: String) -> [String: String] {        // 实现逻辑省略    }    

2.1.2 请求Prompt

    // Swift代码示例    struct message: Decodable, Encodable {        // 实现逻辑省略    }    

2.1.3 解析Response

    // Swift代码示例    struct NTESNeteaseAIChatResponse: Decodable {        // 实现逻辑省略    }    

2.2 Xcode 插件制作

在iOS开发环境Xcode中,可以创建自己的插件,iTaTools旨在实现两个目标,第一个已完成,第二个正在进行中。

2.2.1 创建Extension

通过File->New->Target的方式,在macOS中找到Source Editor Extension并创建。

2.2.2 获取源文件高亮中代码

    // 获取高亮部分代码的关键逻辑    // 实现部分代码省略    

2.2.3 Json2Code Command

    // Swift代码示例    func perform(with invocation: XCSourceEditorCommandInvocation, completionHandler: @escaping (Error?) -> Void ) -> Void {        // 实现逻辑省略    }    

2.2.4 功能菜单栏

配置Extension Info plist文件中的功能菜单栏,告知系统Command信息。

3.总结

AIGC工具正在改变开发工作方式,简化重复代码编写。Xcode插件结合AIGC能力将提高开发效率,减少繁重工作,让开发者更专注于核心业务开发。

未来,Xcode插件还会进一步拓展功能,例如训练子模型、改进代码建议等。

作者: 刘瑞

来源-微信公众号: 网易传媒技术团队

出处: https://mp.weixin.qq.com/s/CHrSQYvyrsPIjyG0YCPLTA

想学习更多关于数字艺术的知识吗?点击咨询 火星时代教育,开设课程有游戏设计培训、动画培训、UI设计培训等。

热门课程推荐

热门资讯

请绑定手机号

x

同学您好!

您已成功报名0元试学活动,老师会在第一时间与您取得联系,请保持电话畅通!
确定