iOS-Xcode --- swift生成技术文档之jazzy 在网上看了很多都是针对OC项目的文档生成,找了好久终于看到jazzy这件神器了。...下面看下如何安装使用: 安装 使用终端命令进行安装 ~$ sudo gem install jazzy 使用 为了简单的展示,我在桌面创建了一个swift工程,工程名Demo。...从终端进入工程目录 ~$ cd ~/Desktop/Demo 执行jazzy运行的命令 ~$ jazzy --min-acl internal 另外,如果你的swift不是最新版的则看不到Jazzy的输出...,这样的话需要添加一个参数来指定xcode所支持的swift版本:(xxx是你的swift的版本哦) ~$ jazzy --swift-version x.x.x --min-acl internal...swift代码
前言 想要为 Swift 的 String、Array、Dictionary 这几种常见类型,添加一个 isNotEmpty 属性。...直接明了版本 最直接明了的版本当然就是分别给 String、Array、Dictionary 写分类,在分类中添加一个只读计算属性 isNotEmpty 即可。...你要了解到,有 isEmpty 属性的类型远不止以上三种类型,难道之后有需求对其他带有 isEmpty 属性的类型添加 isNotEmpty 属性,我都要来写一个分类?...这么一来就好办了,我只需要在 Collection 协议的分类中,添加一个 isNotEmpty 属性即可: extension Collection { /// 判断集合非空 public...参考资料 [1] Swift 里集合类型协议的关系: https://www.cnblogs.com/huahuahu/p/Swift-li-ji-he-lei-xing-xie-yi-de-guan-xi.html
前言 在一些前端动态网页的表单里,并不是所有的参数都需要填写或选择,有些需要隐藏起来,然后跟着小单一起提交传递给后台,发送到服务器端 那这个是怎么实现的呢 示例展示 具体示例,可见 https://coder.itclan.cn...,但在提交表单时,却又要携带上去,是有这种需求的,比如用户修改某件商品信息时,商品的id,商品的id并不是用户想要关心的 但是这个id又是数据库表格的标识,往往是一个必传的字段,因此使用隐藏变量把这个参数隐藏起来...[0].myhidden.value = "我是隐藏的参数"; var str = "表单将提交的参数包括" // 定义字符拼接变量 // 拼接年份参数 str += '\n...年份:'+document.forms[0].myyear.value; // 拼接姓名参数 str += '\n姓名:'+document.forms[0].myname.value;...// 拼接隐藏参数 str += '\n隐藏变量'+document.forms[0].myhidden.value; alert(str); // 展示字符拼接的值 } 如下是
创建库时自动生成了ReplaceMe.swift文件,我们添加一些测试代码: import Foundation public struct RepleaceMeTest { public...} } 六、提交代码 通过Source Tree管理代码,commit代码变动: [AaronSwift (Git).jpg] 七、添加Tag 每一个版本我们需要添加一个Tag,如下图 [AaronSwift...(Git) 2.jpg] 八、检测配置文件是否填写正确 pod spec lint --allow-warnings 其中--allow-warnings参数代表忽略警告,如果你的代码在编译时有警告,...如果不加这个参数就会报错。.../AaronSwift/AaronSwift/目录中,可以找到对应版本号的目录,目录里面就是配置文件(后缀为podspec)。
#{room} and mydate like #{mydate}") public List getbyroom(OrderPara op); } 这样整个语句是写死的,必须有2个参数...,在这种模式下,如何能实现根据room和mydate是否为空来动态的拼写sql语句 比如当mydate="" Select("select * from tbl_order where room like
SwiftLint [1240] 对于Swift项目的静态分析可以使用SwiftLint。SwiftLint 是一个用于强制检查 Swift 代码风格和规定的一个工具。...SourceKit包含在Swift项目的主仓库,它是一套工具集,支持Swift的大多数源代码操作特性:源代码解析、语法突出显示、排版、自动完成、跨语言头生成等工作。...xcodebuild -workspace WorkspaceName.xcworkspace -scheme SchemeName Release clean **之后对xcodebuild命令的使用都需要将这些参数替换为自己项目的参数...它的安装方式为: $ gem install xcpretty OCLint的使用 在使用OCLint之前还需要一些准备工作,需要将编译项COMPILER\_INDEX\_STORE\_ENABLE设置为...而OCLint作为一个target本身就运行在特定的环境下,所以xcodebuild可以省去配置参数。
4.1. kustz 使用 cobrautils 为命令添加更实用的命令参数大家好, 我是老麦。...图片图片之前的章节, 我们陆陆续续给 kustz 库添加了很多丰富服务的配置代码还是放在 Github https://github.com/tangx/kustz/tree/chapter/12-cobrautils-flagkustz...接下来我们给 kustz 添加一些更丰富的参数 , 使 kustz 用起来更顺手。在 CICD 的中, 一般情况下 变量,健康检查, 镜像策略 等很难发生变动。...因此, 我们需要绑定更丰富的参数来支持我们 CI 的运行。cobra flag之前在 /cmd/kustz/cmd/render.go 中, 我们为命令添加了一个指定配置文件的参数。...使用结构体组合了所有参数, 每个字段通过注释描述, 作用更清晰, 耦合度更高。支持 指针参数, 解决了 零值 带来的负面影响。一行命令解决了所有参数的绑定。
前置工具 在我来介绍这套工具包其他工具之前,我先来介绍两个工具,我称它们为前置工具,因为有了这两个工具,我们才能更好的使用其他的工具。...我们就以xcodebuild举例,我们通过which xcodebuild得到的结果是/usr/bin/xcodebuild,也就是说我们在执行xcodebuild的时候实际上在执行usr/bin/xcodebuild.../usr/bin路径下,我们就需要在命令前加上xcrun了,如swift-demangle,如果我们直接使用swift-demangle就会出现命令找不到的错误,使用xcrun swift-demangle...atos 作用:Crash 符号化;路径:/Applications/Xcode.app/Contents/Developer/usr/bin/atos; # 0x0000000100298000为...类结构以及定义的方法 otool -ov XXX # 查看头部内容 otool -h XXX # 查看 load commands otool -l XXX # 查看该应用是否砸壳 # 看输出结果的cryptid参数
在终端输入 oclint --version xcpretty 用于对xcodebuild的输出进行格式化 gem install xcpretty 用法: 紧跟在xcodebuild 相关语句后面,...比如: xcodebuild [flags] | xcpretty 可以结合tee进行日志收集 xcodebuild [flags] | tee xcodebuild.log | xcpretty...多个目录用英文逗号隔开 sonar.sources=D:/workspace/Demo/src 进入项目根目录下,然后输入“sonar-scanner”命令,执行代码分析 命令行方式: 在命令中设置了参数...-Dsonar.swift.swiftlint.report=swiftlint.txt -Dsonar.swift.lizard.report=lizard-report.xml -Dsonar.swift.infer.report...每次扫描的时候想知道是扫描的哪个版本的数据,通过参数-Dsonar.projectVersion参数可以上传版本号. shell中获取版本号 version_number=`sed -n '/MARKETING_VERSION
时,Xcode 会使用 New Build System 语义解析它们,该语义也支持条件参数; 通过将 SUPPORTED_PLATFORMS 构建设置设置为您支持的平台列表并将 ALLOW_TARGET_PLATFORM_SPECIALIZATION...设置为 YES,将框架配置为在单个构建操作中为多个平台构建; 可以在构建阶段使用平台过滤器,并为所有支持的平台定位依赖项; 当发生构建失败时,xcodebuild 现在会在构建日志末尾的摘要中显示每个失败命令的目标和项目名称...中将占位符扩展为闭包时,代码完成使用闭包的参数名称而不是 ; Xcode 13 中的 Swift 语法高亮显示是即时且无闪烁的,无论是在文件之间进行编辑还是导航; 即使您的代码不完整或您的项目无法编译...作为平台; 当尝试导入本地尚不可用的模块时,Xcode 现在会建议添加的集合中的包; 现在可以在 Add Packages 表中添加精选的包集合; 单元测试现在可以直接测试可执行目标。...,其闭包参数是 async throws; xcodebuild 现在支持将某些环境变量传递给测试运行器进程; XCTExpectFailure 函数现在包括用于自定义某些选项的 Swift 重载,而无需创建
这些包由 Xcode(或命令行中的 xcodebuild)生成,并提供了有关所运行测试的丰富信息,包括测试的名称、持续时间、状态以及它们生成的任何附件(如截图或日志)。...解析 XCResult 包当你在 CI/CD 环境中运行应用的测试时,XCResult 包变得更加重要,因为没有它们,关于测试失败的唯一信息将是 xcodebuild 命令的日志。...在终端中运行以下命令来创建项目:swift package init --type executablecd [YourProjectName]然后编辑 Package.swift 文件以添加依赖项:/...这个文件将导入库,处理命令行参数,并解析 XCResult 包的内容。...处理命令行参数:@Argument 属性包装器用于定义命令行参数。在这里,我们要求用户提供一个 .xcresult 包的路径。
在上家公司用Swift开发工程时,用的就是Carthage。Carthage诞生于14年11月份,是用Swift语言开发的,相对于CocoaPods来说是一个新生事物。...首先我们来看一下Carthage的官方介绍:Carthage的初衷是以最简单的方式来为你的Cocoa应用添加framework。...而这个Carthage文件夹下存放的就是Carthage为我们提供的动态库framework。 ?...在Shell下方配置上carthage的命令路径以及相关的运行命令的参数,如下所示: /usr/local/bin/carthage copy-frameworks ?...在引用相关库的时候需要添加上其库名,如下所示: ? 三、carthage编译 因为Carthage工程是Swift编写的,并且是使用Carthage进行的依赖管理。
icon 等资源文件 2. codesign 命令重签名 这一步与其他的重签脚本有点不一样,以 iOS App Signer 的逻辑为例,需要先将 mobileprovision 复制到包内改名为 embedded.mobileprovision...,并从中提取 Entitlements 相关参数作为 codesign 的参数来重签的。...命令也是不需要 --entitlements 参数的。...一个 appex 其实可以理解为一个小型 App(只是需要依赖 App 才能运行),所以如果有开发过 Extension 功能的同学就会知道,Appex 也是会有独立的证书、描述文件和 Info.plist...SwiftSupport:如果你在 Target 的 Build Settings 中打开了 ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES,此次编译使用的 Swift 版本对应的标准库文件
把 swift 代码放入 BookReader/BookReader/Classes/ 目录下,资源文件 *.png,*.xib,*.storyboard 放入 BookReader/BookReader...添加 swift 版本信息。...- NOTE | xcodebuild: libpng warning: Input PNG is already optimized for iPhone OS....- NOTE | xcodebuild: libpng warning: Input PNG is already optimized for iPhone OS....添加 --allow-warnings 忽略警告。
xcodebuild 指定 -derivedDataPath 设置缓存路径,并将该目录配置到 diff ignore中。...通过以上步骤就实现了增量编译,但是该方案针对swift不生效。swift在Release模式采用的全量编译(如下图),做整体优化。不过swift Bundle可以采用上述Bundle拆分的方案。 ?...同时,考虑到iOS开发向Swift转型的需要,如果在include目录的基础上,还能够提供一份基于include里头文件的module.mapmodule文件。将方便后期业务方向Swift的迁移。...具体方法是: 1)首先框架的Bundle,在工程设置中点击工程的Target→Build Phases→Copy Files点击+,输入.h把需要暴露的头文件都添加上。...2)使用的时候,将头文件搜索路径设置到include目录,并且设置为非递归搜索。 ? 验证下来,Hotel工程修改之后的Build时间为7分钟,相比修改之前的19分钟,时间减少了63%。
使用 SwiftPM 创建动态框架 默认情况下,Xcode 允许开发者选择以静态还是动态方式链接 Swift 包。而在实际操作中,它总是会直接将包捆绑为静态库。...伞形框架 现在,我们的 Swift 包已经成为动态框架。 除了包内定义的代码之外,各子依赖项(包括第三方库)现在也已成为动态链接框架的一部分,即使子依赖项本身仍为静态。...使用二进制目标创建一个新的 Swift 包。 为每个架构建立框架,并将 build 输出打包在 xcframework 当中,由上述二进制目标进行引用。 将新包导入至现有动态库中。...构建 XCFramework 我们可以使用 xcodebuild 命令行工具来创建二进制框架。...# Build framework for iOS xcodebuild -project ..
开发环境配置这里实际上是把当前目录挂载为匿名卷docker run --rm -v $PWD:/app -w /app -it swift:5.5-focal切换swift 版本sudo xcode-select...-s /Applications/Xcode.app/Contents/Developer拉取依赖使用系统代理拉取xcodebuild -resolvePackageDependencies -scmProvider...system清除构建缓存open ~/Library/Developer/Xcode/DerivedData清除包缓存open ~/Library/Caches/org.swift.swiftpm/repositories
将Build Active Architecture Only设置为YES,Debug时不需要生成全架构 c....去除三目预算符、减少类型推断、拆解复杂的 Swift 表达式 1. 优化工程配置 a....优化头文件搜索路径 避免工程 Header Search Paths 设置了路径递归引用: Xcode 编译源文件时,会根据 Header Search Paths 自动添加 -I 参数,如果递归引用的路径下子目录越多...,-I 参数也越多,编译器预处理头文件效率就越低,所以不能简单的设置路径递归引用。...设置Xcode编译线程数 defaults write xcodebuild PBXNumberOfParallelBuildSubtasks 8 defaults write xcodebuild IDEBuildOperationMaxNumberOfConcurrentCompileTasks
工具栏 除此外,当我们使用命令行通过 xcodebuild 进行 build archive 操作时,都依赖 build system 完成工作。...构建 compiler-rt 报错: CMake Error in ~/swift-source/llvm-project/pstl/CMakeLists.txt: The custom command...generating ~/swift-source/build/Xcode-2023/llvm-macosx-x86_64/projects/compiler-rt/lib/builtins...兼容性解决方案 为了避免报错,我们可以通过添加参数 -T buildsystem=1 避免 示例: ?
编辑 obfuscate_project 混淆脚本 修改一下几个参数 主要是修改这几个参数, 下面是使用 workspace 管理时的参数修改(如果不是使用 workspace ,就注释 WORKSPACE...那一行,解开 PROJECT 的注释) WORKSPACE、PROJECT、SCHEME、CONFIGURATION、CONFIGURATION 根据实际项目填写 SDK 版本号可以使用 xcodebuild...ios-class-guard 执行结果,会输出宏定义 .h 文件,当我们导入该 .h 时,OC 的类/方法被定义为混淆字符串。...注意:如果在混编项目中,Swift 中调用 OC 的类或扩展,需要忽略该 OC 类或扩展的混淆。在执行 ios-class-guard 添加 -F 参数,例如 -F !...这边以ipaguard为例,目前还在免费阶段,想薅羊毛的快快试试。 Ipa Guard是一款功能强大的ipa混淆工具,不需要ios app源码,直接对ipa文件进行混淆加密。
领取专属 10元无门槛券
手把手带您无忧上云