Swift – 函数体长度违规或行长度违规

Swift – Function Body Length Violation or Line Length Violation

我在 Xcode (swift) 上有一个函数,returns 一个很长的数组,每行一个字。喜欢

static func en() -> [String] {
    [
        "a",
        "about",
        "above",
        "after",
        "again",
        "against",
        "all",
        "am",
        ...

当我尝试编译它时,我得到:

Function Body Length Violation: Function body should span 40 lines or less excluding comments and whitespace: currently spans 175 lines (function_body_length)

如果我尝试删除换行符并添加空格,我会得到这个

Line Length Violation: Line should be 120 characters or less: currently 1492 characters (line_length)

我认为是 SwiftLint 的问题。

我该如何解决这个问题?如何禁用此错误。

选项 1:调整布局或设计

你的问题好像是源代码中的英文单词太长造成的

在每行一个项目和一行包含所有项目之间的一种简单方法是 将此数据分布在多行上:

1492 个字符分成 120 行给出 13 行。如果您考虑到 4.7 的平均英语单词长度(在您的情况下,平均不可分割的标记长度为 6.7,并带有引号,您可能不得不在额外的行上移动一些词。做数学,平均而言,额外的行必须额外包含 88 个字符 (6.7*13),所以第 14 行。考虑到 175 行限制,你仍然有足够的边距 ;-)

更好的方法是将数据存储在文件中,然后在运行-时间 将数据动态加载到数组中。不仅不会让你的源代码超重,而且还有助于维护新词列表,以及国际化。

选项 2:配置 linter

相对较小的行长度和正文长度限制与语法或编译器限制无关。它是静态分析规则,旨在挑战您编写更具可读性的代码。

你可以disable the rules:

  • 在项目级别,在文件中 .swiftlint.yml
  • 在源码中,加上注释// swiftlint:disable <rule1> [<rule2> <rule3>...]

您可以在

中找到带有 line_length 的实际示例

我想你可以把你的数组放在一个 json 文件中并像那样解码它。

if let url = Bundle.main.url(forResource: "Filename", withExtension: "json") {
        do {
            let data = try Data(contentsOf: url)
            let array = try! JSONDecoder().decode(YourModel.self, from: data)
            // deal with it.
        } catch {
            print("error",error)
        }
    }