有没有办法创建一个生成Xcode项目的应用程序,开发人员可以在Xcode中运行该项目。有点像代码生成器。我试图在网上寻找答案,但无济于事。我也不知道从哪里开始。基本上,该应用程序将生成Xcode兼容代码,开发人员可以使用这些代码打开Xcode。
AppStore中提供的提供相同功能的示例应用程序是Interface for iOS。链接:https://itunes.apple.com/en/app/interface/id360543182?mt=8
另一个例子是应用创建者Dapp: https://itunes.apple.com/au/app/dapp-app-creator-make-learn/id370888555?mt=8
从他们的应用说明:
Xcode导出,将您的样机变为实时代码 我们基于免费云的Xcode导出服务只需轻轻一按即可将整个项目转换为Xcode项目。
Dapp为您创建完整的Xcode项目 - 包括代码,图片,视频和Xcode故事板!
更新:我想在应用程序中包含一个示例Xcode项目模板文件的zip文件,该文件将生成将由模板项目使用的代码,在模板项目中编辑或添加它们,压缩并导出到Documents文件夹通过iTunes文件共享。
答案 0 :(得分:-1)
您发布的链接的应用仅用于创建模型。 不生成代码。
无法创建一个可以生成代码的应用程序,以后可以以某种方式在xcode中导入并运行它。
答案 1 :(得分:-2)
打开Xcode,创建一个新项目,选择单视图应用程序(或最适合您将要生成的内容)点击创建。
转到创建此项目的目录,将其压缩并将其包含在将要生成的应用程序的项目中。
在生成代码时,第1步是创建一个工作目录并将项目解压缩到它。
生成您的类等,并将它们放入AppDelegate.h和从Single View Application模板为您生成的其他文件所在的目录中。
打开xcodeproj包,在根级别会有一个名为project.pbxproj的文件,将其读入内存
修改project.pbxproj以包含生成的代码文件,将会有一个名为PBXFileReference的部分,您可以在其中执行此操作。
以下是我方便的项目中的PBXFileReference部分示例:
/* Begin PBXFileReference section */
DB6C03BA1B148F56007554E7 /* UIAlertController.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = UIAlertController.app; sourceTree = BUILT_PRODUCTS_DIR; };
DB6C03BE1B148F56007554E7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
DB6C03BF1B148F56007554E7 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
DB6C03C11B148F56007554E7 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
DB6C03C21B148F56007554E7 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
DB6C03C41B148F56007554E7 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = "<group>"; };
DB6C03C51B148F56007554E7 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = "<group>"; };
DB6C03C81B148F56007554E7 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
DB6C03CA1B148F56007554E7 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
DB6C03CD1B148F56007554E7 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = "<group>"; };
DB6C03D31B148F56007554E7 /* UIAlertControllerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = UIAlertControllerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
DB6C03D81B148F56007554E7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
DB6C03D91B148F56007554E7 /* UIAlertControllerTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UIAlertControllerTests.m; sourceTree = "<group>"; };
/* End PBXFileReference section */
将您的更改写入project.pbxproj(我想可能不仅仅是PBXFileReference,取决于您尝试实现的复杂程度)。
将项目的工作目录内容和电子邮件或UIDocumentInteractionController输出给用户。
这是关于pbxproj文件的好文章:http://danwright.info/blog/2010/10/xcode-pbxproject-files/