开设
iOS开发人员课程的时间越来越少,所以今天我们继续发布10个Swift Questions 10系列的资料。 第一部分可以在
这里阅读 。

在Swift中解释泛型?
泛型(泛型模板)允许您编写可与任何类型一起使用的灵活,可重用的函数和类型。 您可以编写避免重复的代码,并以清晰抽象的方式表达其目的。
Swift中的Array和Dictionary类型是通用集合(泛型)。
在下面的代码中,用于交换两个值的通用函数用于字符串和整数。 这是可重用代码的示例。
func swapTwoValues<T>(_ a: inout T, _ b: inout T) { let temporaryA = a a = b b = temporaryA } var num1 = 4 var num2 = 5 var str1 = “a” var str2 = “b” swapTwoValues(&num1,&num2) swapTwoValues(&str1,&str2) print (“num1:”, num1)
快速的可选类型是什么?何时使用它们?
Swift中的Optional(可选,“可选”)是值可以或可以不可以的类型。 通过添加“?”表示选项 任何类型。
使用可选的选项:- 可能会失败的代码片段(我期望有什么,但什么也没收到)。
- 当前为空但以后可能变成某些对象的对象(反之亦然)。
一个可选的好例子:可能存在或可能不存在的财产 ,例如Person类中的中间名或丈夫/妻子。一种可以返回值或不返回任何值的方法,例如,在数组中匹配。可以返回结果或错误且不返回任何内容的方法 ,例如,尝试读取文件的内容(因此通常将返回文件数据),但是该文件不存在。并非总是必须设置的委托属性 ,通常在初始化之后进行设置。
就像班上薄弱的环节 。 它们指向的内容可以随时设置为nil。
如果您需要一种方法来找出何时设置了值(数据尚未加载>数据),而不是使用单独的布尔变量dataLoaded。
Swift中的可选链接是什么?
请求,调用可能为“ nil”值的可选属性,下标和方法的过程被定义为可选序列(可选链) 。可选序列返回两个值-
- 如果该选项包含“值”,则在调用与之关联的属性,方法和下标时,将返回该值
- 如果可选包含“ nil”,则与其关联的所有属性,方法和下标均返回nil
可选序列是强制拆包的替代方法。
什么是强制展开?
强制拆包是一种
检索可选内容中包含
的值的方法。 此操作很危险,因为您实际上是在告诉编译器:我确定此选项包含一个实值,请解压缩它!
let value: Int? = 1 let newValue: Int = value!
什么是隐式展开?
隐式拆包 :当我们定义一个隐式拆包选项时,我们定义一个容器,该容器将在每次读取它时自动强制拆包。
var name: String! = “Virat” let student = name
如果隐式解压缩的可选值为nil,并且您尝试访问其打包值,则将引发运行时错误。 结果与将感叹号放置在不包含值的通常的可选选项之后完全相同。什么是可选绑定?
您可以以“安全”或“不安全”的方式打开选件的包装。 一种安全的方法是使用可选的活页夹。
可选绑定用于确定可选值是否包含值,如果包含,则我们将使该值作为时间常数或变量可用。 因此,无需使用后缀! 获得其价值。
let possibleString: String? = "Hello" if let actualString = possibleString {
什么是Guard
?有什么好处?
guard
声明简单而强大。 它检查某些条件,如果评估为假,则执行else语句,通常会终止该方法。
func addStudent(student: [String: String]) { guard let name = student["name"] else { return } print("Added \(name)!") guard let rollNo = student ["rollNo"] else { print("roll No not assigned") return } print("Assigned roll no is \(rollNo).") } addStudent(student: ["name": "Ravi"])
guard
的优点是
执行速度更快 。 仅当条件为false时才执行
Guard
块,并且该块将通过控制传递语句(如
return
,
break
,
continue
或
thrown
退出。 这样可以提早退出,减少括号。 提早退出意味着更快的执行速度。
请参考本文以获取更多信息。
什么时候应该使用guard let
, if let
什么时候if let
?- 如果您想消除意外/错误的输入,并有其他处理输入的方法,请着重于目标。
if
使用else
块, if
使用guard
来减少嵌套和缩进,因为它相对紧凑。
什么是defer
?
在代码执行离开当前块之前,使用
defer
执行一组语句。
if
块中的
defer
将首先执行。 随后是LIFO模式,以执行其余的
defer
语句。
func doSomething() { defer { print(“1”)} defer { print(“2”)} defer { print(“3”)} if 1<2 { defer { print("1<2")} } defer { print(“4”)} defer { print(“5”)} defer { print(“6”)} } 1<2 6 5 4 3 2 1
列出Swift中使用了哪些控件转移运算符?
break
-
break
语句立即终止整个控制流语句的执行。
continue
-
continue
语句使循环停止正在执行的操作,并在循环的下一次迭代开始时重新开始。
return
从函数返回值。
throw
-需要使用抛出函数进行错误转发
fallthrough
-
fallthrough
语句在switch case块中用于执行case语句,该case语句根据用户要求位于相应的case语句旁边。
swift
fallthrough
操作符用于执行下一种情况,即使它与原始情况不匹配也是如此。
let integerToDescribe = 5 var description = “The number \(integerToDescribe) is” switch integerToDescribe { case 2, 3, 5, 7, 11, 13, 17, 19: description += “ a prime number, and also” fallthrough case 10: description += “ case 10.” default: description += “ an integer.” } print(description)
第二部分结束。 第一部分可以在
这里阅读 。
我们正在等待您的评论,并回顾在几个小时内会有一个
开放日 ,我们将在此框架内详细讨论我们的课程。