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

时间:2015-09-23 12:57:56

标签: ios swift initialization

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

这是我的代码:

enter image description here

为什么我不能这样做?

4 个答案:

答案 0 :(得分:9)

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

1。类型名称应为UpperCamelCase

请为您的班级Entity而不是entity

命名

2。扩展NSObject ......

为什么Entity会延长NSObject?你有正当理由这样做吗?

3。能见度

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

4。结构而不是类

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

5。 “created”属性声明为String?严重?

我经常看到使用String类型代替其他许多类型的代码(例如IntNSDateBool,...)。为什么?每次你需要执行一些与实际类型严格相关的操作/检查时(例如添加数字,比较日期等等),这极难处理这个值。

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

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

希望这会有所帮助:)

答案 1 :(得分:5)

您无法为变量提供与类型相同的名称:编译器会感到困惑,并认为您对entry类型的引用是指entry新的变量,因此警告。

最好的解决方案是使用CamelCase名称作为变量的类型和llamaCase名称,如Apple在" Swift编程语言"中所推荐的那样。例如:

public var entry = Entry()

public class Entry: NSObject {

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

答案 2 :(得分:2)

您只是碰撞了条目变量引用的名称和条目类。只需重命名条目类:例如,将其设为“Entry”。

答案 3 :(得分:1)

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

var levelEntry = Entry()