【问题标题】:How to Deal with Default Initializer when variable are not initialized Using Struct未使用 Struct 初始化变量时如何处理默认初始化程序
【发布时间】:2015-04-16 07:38:07
【问题描述】:

当我的结构变量未初始化时,我正在使用 swift 结构并尝试使用其默认初始化程序,我尝试了非可选变量和可选变量,但它只显示“memberwise Initializer”。

下面是可选变量的示例

struct myFirstStruct {
    var value1:String?
    var value2:String?
}

以下是非可选变量的示例

struct myFirstStruct {
    var value1:String
    var value2:String
}

它只给了

myFirstStruct(value1: <#String?#>, value2: <#String?#>)

我想使用myFirstStruct()

帮帮我。 :)

【问题讨论】:

  • 您希望能够使用的初始化程序是什么?

标签: ios iphone ipad swift ios8


【解决方案1】:

Xcode 仅向您展示“成员方式”初始化程序,但使用 myFirstStruct() 完全有效,不传递任何参数,因为您的所有变量都有默认值。

struct myFirstStruct {
    var value1:String?
    var value2:String = "InitialString"
}

let s1 = myFirstStruct() 
// value1 = nil, value2 = "InitialString"

let s2 = myFirstStruct(value1: "Hello", value2: "World") 
// value1 = "Hello", value2 = "World"

【讨论】:

  • 是的,我在 Playgrounds 和应用程序中对其进行了测试,它们都运行良好。
【解决方案2】:

需要设置默认值。

struct myFirstStruct {
    var value1:String? = nil
    var value2:String? = nil
}

let object = myFirstStruct()

【讨论】:

  • @ABakerSmith 是的,你说得对,但他的回答是给两个初始化器 :)
  • 虽然= nil不是必须的,你可以省略它们,它仍然可以工作。
  • 这个答案是正确的,但只处理所有属性都是可选的情况。查看可选和非可选属性案例的其他答案。
猜你喜欢
  • 2021-12-17
  • 2021-11-11
  • 2019-05-17
  • 1970-01-01
  • 2014-12-29
  • 1970-01-01
  • 1970-01-01
  • 2020-02-08
  • 1970-01-01
相关资源
最近更新 更多