Swift 变量在其自身初始值内使用

Swift Variable used within its own initial value

我正在尝试初始化一个对象,但出现此错误:Variable used within its own initial value

这是我的代码:

为什么我不能这样做?

更改实例的名称,因为您不能使用与 class 相同的名称。此外,您应该将 class 的名称更改为大写,以便更容易区分 class 名称和实例

var levelEntry = Entry()

您不能为变量赋予与类型相同的名称:编译器会感到困惑,它认为您对 entry 类型的引用是指 entry 新变量,因此警告。

最好的解决方案是对类型使用 CamelCase 名称,对变量使用 llamaCase 名称,正如 Apple 在 "The Swift Programming Language" 中所推荐的那样。例如:

public var entry = Entry()

public class Entry: NSObject {

(另请注意,您无需明确说明 entry 变量的类型,因为它很容易从其值中推导出来。)

您只是在条目变量引用的名称和条目 class 之间发生了冲突。只需重命名条目 class:例如将其命名为 "Entry"。

其他答案正确。我想在这里添加一些建议,因为我在你的代码中看到了很多非常丑陋的东西:[

1。类型名称应为 UpperCamelCase

因此将您的 class 命名为 Entity 而不是 entity

2。扩展 NSObject...

为什么 Entity 扩展 NSObject?您有正当理由这样做吗?

3。能见度

我在你的代码中看到很多 public。为什么?你正在创建一个库吗?因为可能没有必要制作 public 所有这些东西。

4。结构而不是 Class

如果 Entity 只是一堆数据的容器,它应该是 struct,而不是 class。你会得到更好的表现。

5。 "created" 属性 声明为字符串?认真的吗?

我经常看到代码中使用 String 类型代替许多其他类型(例如 IntNSDateBool、... ).为什么?这使得每次您需要执行一些 action/check 与实际类型严格相关的操作(例如添加数字、比较日期等...)时处理该值变得非常困难

6。一切都初始化为“”,为什么?

created为空串是什么意思?如果您使用空 String 来指示缺少值,您应该使用 nil 代替(当然使 属性 成为可选类型)。

希望这对您有所帮助:)