在 Swift 项目中获取强类型、自动补全的资源,如图像、字体和 Segue
它使你的代码使用资源时
目前你的代码是
let icon = UIImage(named: "settings-icon")
let font = UIFont(name: "San Francisco", size: 42)
let color = UIColor(named: "indicator highlight")
let viewController = CustomViewController(nibName: "CustomView", bundle: nil)
let string = String(format: NSLocalizedString("welcome.withName", comment: ""), locale: NSLocale.current, "Arthur Dent")
使用 R.swift 后变为
let icon = R.image.settingsIcon()
let font = R.font.sanFrancisco(size: 42)
let color = R.color.indicatorHighlight()
let viewController = CustomViewController(nib: R.nib.customView)
let string = R.string.localizable.welcomeWithName("Arthur Dent")
查看 更多示例 或了解 Fabric.app 如何使用 R.swift!
自动补全的图像
编译时检查的图像
这只是一个开始,查看 更多示例!
Mathijs Kadijk 在 2016 年 9 月的 CocoaHeadsNL 聚会上展示了 R.swift。讨论了 R.swift 背后的想法,并演示了如何从纯粹的字符串类型 iOS 代码迁移到静态类型代码。
将 R.swift 安装到你的项目后,你可以使用 R
结构体来访问资源。如果该结构体已过期,只需构建,R.swift 将更正任何缺失/更改/添加的资源。
R.swift 目前支持以下类型的资源
使用 R.validate()
进行运行时验证
从 Rswift 7 开始,推荐使用 Swift Package Manager 进行安装。
演示视频:从 R.swift 6 更新到 Rswift 7 (从 1:06 开始,介绍了 Rswift 7 的安装).
演示视频:在 Xcode 中使用 SPM 安装 R.swift
https://github.com/mac-cain13/R.swift
并单击 "Add Package"。RswiftGenerateInternalResources
。(截图)R
结构体应该可以在你的代码中使用了,使用自动完成来探索所有静态引用。注意:第一次构建时,你可能需要批准新的插件,方法是单击关于新插件的构建错误警告。
在你的 CI 服务器上,你无法显式允许构建插件运行,因此你需要禁用插件验证才能在没有用户交互的情况下进行构建
defaults write com.apple.dt.Xcode IDESkipPackagePluginFingerprintValidatation -bool YES
。在 Xcode Cloud 上,你可以在 ci_scripts/ci_post_clone.sh
中添加一个 自定义构建脚本,其中包含 Xcode 将运行的此行代码。
dependencies: [
.package(url: "https://github.com/mac-cain13/R.swift.git", from: "7.0.0")
]
.target(
name: "Example",
dependencies: [.product(name: "RswiftLibrary", package: "R.swift")],
plugins: [.plugin(name: "RswiftGeneratePublicResources", package: "R.swift")]
)
R
结构体应该可以在你的代码中使用了,使用自动完成来探索所有静态引用pod 'R.swift'
添加到你的 Podfile 并运行 pod install
TARGETS
下选择你的目标,单击 Build Phases
选项卡并通过单击左上角的小加号图标添加一个 New Run Script Phase
Run Script
阶段拖动到 Compile Sources
阶段上方和 Check Pods Manifest.lock
下方,展开它并粘贴以下脚本"$PODS_ROOT/R.swift/rswift" generate "$SRCROOT/R.generated.swift"
$SRCROOT/R.generated.swift
添加到 Build Phase 的 "Output Files"$SRCROOT
文件夹中有一个 R.generated.swift
,将 R.generated.swift
文件拖到你的项目中并取消选中 Copy items if needed
可以在 此处 找到 Build Phase 的屏幕截图
提示: 将 *.generated.swift
模式添加到你的 .gitignore
文件中,以防止不必要的冲突。
TARGETS
下选择你的目标,单击 Build Phases
选项卡并通过单击左上角的小加号图标添加一个 New Run Script Phase
Run Script
阶段拖动到 Compile Sources
阶段上方,展开它并粘贴以下脚本"$SRCROOT/rswift" generate "$SRCROOT/R.generated.swift"
$SRCROOT/R.generated.swift
添加到 Build Phase 的 "Output Files"$SRCROOT
文件夹中有一个 R.generated.swift
,将 R.generated.swift
文件拖到你的项目中并取消选中 Copy items if needed
可以在 此处 找到 Build Phase 的屏幕截图
提示: 将 *.generated.swift
模式添加到你的 .gitignore
文件中,以防止不必要的冲突。
我们欢迎贡献,阅读 贡献文档 以获取有关如何报告问题、提交想法和提交拉取请求的信息!
R.swift 由 Mathijs Kadijk 和 Tom Lokhorst 创建,并根据 MIT 许可 发布。