Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Class 为什么在创建对象时需要预先展开数据类型?斯威夫特5_Class_Types_Uilabel_Swift5_Xcode11 - Fatal编程技术网

Class 为什么在创建对象时需要预先展开数据类型?斯威夫特5

Class 为什么在创建对象时需要预先展开数据类型?斯威夫特5,class,types,uilabel,swift5,xcode11,Class,Types,Uilabel,Swift5,Xcode11,在ViewController类中创建任何对象时,每当我转到internet或联机检查项目时,我都会在数据类型的末尾看到一个感叹号(!),为什么?例如:@IBOutlet弱变量标签:UILabel! 那为什么会这样呢马克或者我们为什么要强行拆开它? 当我删除它时,它会给出一个错误,我们也可以这样写@IBOutlet-weak-var-Label=UILabel() 那么我们为什么不使用这个呢?你需要一步一步地理解这些事情才能得到答案 @IBOutlet:这是一个属性包装器,告诉Xcode将故事板

在ViewController类中创建任何对象时,每当我转到internet或联机检查项目时,我都会在数据类型的末尾看到一个感叹号(!),为什么?例如:@IBOutlet弱变量标签:UILabel! 那为什么会这样呢马克或者我们为什么要强行拆开它? 当我删除它时,它会给出一个错误,我们也可以这样写@IBOutlet-weak-var-Label=UILabel()
那么我们为什么不使用这个呢?

你需要一步一步地理解这些事情才能得到答案

  • @IBOutlet:这是一个属性包装器,告诉Xcode将故事板上的元素与
    .swift
    文件中的元素连接起来
  • 标记:建议使用此强制展开,因为当
    .swift
    文件需要实例时,它肯定会在情节提要中找到连接的元素。我们还可以写@IBOutlet弱var-Label:UILabel?在这种情况下,实例
    标签将是可选的
  • @IBOutlet弱var Label=UILabel():在这种情况下,实例
    Label的
    值在初始化后立即被
    UILabel()
    覆盖。
    @IBOutlet弱var标签
    Label=UILabel()之后的
    Label
    不是相同的实例
  • @ibvar-label:UILabel
    相当于编写
    var-label:UILabel
    。因此,i-val没有初始值,Swift不允许这样做。在Swift中,您必须为变量指定一个值,或者将其设置为可选/取消包装以显式处理nil值。另外,当您使用
    @IBOutlet
    打开实例时,您可以稍后将其与
    一起使用,如
    label?.text=“Some text”


    因此,我们不得不使用
    用于出口,以明确地使变量成为可选变量,就像在中用于其他变量声明一样。而且我们在声明之后不使用
    =UILabel()
    ,因为它覆盖了从故事板创建的实例(使用nib中的
    NSCoder/Coder
    初始化)。

    嘿@KoushikMudi,var mapView:MKMapView!重写func loadView(){mapView=MKMapView()}这段代码怎么样?我也可以在loadView中编写var mapView=MKMapView,而不是在load view方法之外声明它(我在一本书中找到了这段代码)嘿@YuvrajAgarkar这样写绝对正确。但在这里,您并不是在从情节提要初始化地图视图。这也适用于UILabel示例。如果您没有从故事板连接UILabel,这是在.swift文件中初始化和使用UIView类的方法。很高兴帮助@YuvrajAgarkar