swift数组

[绍棠] swift for 循环

冷暖自知 提交于 2019-12-11 05:11:13
在swift 4.2 中已经舍弃了传统的C语言的for;;循环,替换成更能符合本身语言特性的新形式。 第一种 for - in 这一种是最常用的,可以遍历所有的集合类。如下: func testFor(){ let list = [1,2,3,4]; for idx in list { print("idx =\(idx)"); } let dict = ["a":1,"b":2,"c":3]; for item in dict { print("item = \(item)"); } } 在控制台输出如下: idx =1 idx =2 idx =3 idx =4 item = (key: "a", value: 1) item = (key: "c", value: 3) item = (key: "b", value: 2) 当遍历字典的时候,会自动转换成 元组 ,包含了key和value,我们也可以自己来通过写一个元组来接收如下: let dict = ["a":1,"b":2,"c":3]; for (key,value) in dict { print("key: \(key) value : \(value) "); } 还有一种区间遍历如下: for idx in 0...3 { print("idx =\(idx)"); } 对于这种遍历是swift一个特性,0..

swift 算法 简单59.反转字符串

谁都会走 提交于 2019-12-08 06:32:30
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。 示例 1: 输入:["h","e","l","l","o"] 输出:["o","l","l","e","h"] 示例 2: 输入:["H","a","n","n","a","h"] 输出:["h","a","n","n","a","H"] 解法: func reverseString(_ s: inout [Character]) { // s.reverse() guard !s.isEmpty else { return } var j = s.count-1; var i = 0; var temp: Character; while(i < j){ //类似冒泡 temp = s[i]; s[i] = s[j]; s[j] = temp; i += 1; j -= 1; } } 来源: CSDN 作者: huanglinxiao 链接: https://blog.csdn.net/huanglinxiao/article/details/92959535

Swift 中的利刃,函数和闭包

不问归期 提交于 2019-12-06 22:14:00
Swift 中的利刃,函数和闭包 关于闭包的概念,相信有过其他语言开发经验的朋友都不会陌生了。简单来说 闭包 的语言特性,大大增加了我们的开发效率。而 Swift 更是将闭包运用的游刃有余,仿佛为它而生。下面咱们进入正题。 Swift 中闭包的概念就像是 Objective-C 中的 block 。 闭包 可以嵌套和作为参数传递。 在 Swift 中, 函数 也只不过是一种特殊的 闭包 。 定义函数 Swift 中 可以使用 func 关键字来定义函数。函数可以接收并返回一个或者多个参数和元组。 返回值跟随在 -> 符号后。 func sayHello(firstName: String, lastName: String) -> String { return "Hello \\(lastName) \\(firstName)" } 调用函数 prinln(sayHello("John", "Smith")) //"Hello Smith John" 函数的类型 每个函数都有它自己的 函数类型 ,通过它的参数和返回值来确定。比如这个函数: func add(left: Int, right:Int) -> Int { return left + right } 它的函数类型为: (Int, Int) -> (Int) 我们刚刚了解了函数类型的概念

Swift 中的利刃,函数和闭包

对着背影说爱祢 提交于 2019-12-06 22:13:44
Swift 中的利刃,函数和闭包 关于闭包的概念,相信有过其他语言开发经验的朋友都不会陌生了。简单来说 闭包 的语言特性,大大增加了我们的开发效率。而 Swift 更是将闭包运用的游刃有余,仿佛为它而生。下面咱们进入正题。 Swift 中闭包的概念就像是 Objective-C 中的 block 。 闭包 可以嵌套和作为参数传递。 在 Swift 中, 函数 也只不过是一种特殊的 闭包 。 定义函数 Swift 中 可以使用 func 关键字来定义函数。函数可以接收并返回一个或者多个参数和元组。 返回值跟随在 -> 符号后。 func sayHello(firstName: String, lastName: String) -> String { return "Hello \\(lastName) \\(firstName)" } 调用函数 prinln(sayHello("John", "Smith")) //"Hello Smith John" 函数的类型 每个函数都有它自己的 函数类型 ,通过它的参数和返回值来确定。比如这个函数: func add(left: Int, right:Int) -> Int { return left + right } 它的函数类型为: (Int, Int) -> (Int) 我们刚刚了解了函数类型的概念

Swift入门篇-基本类型

那年仲夏 提交于 2019-12-03 07:56:12
Swift入门篇-基本类型 一:元组 格式 变量或常量关键字 元组变量 = ( 变量,变量, …) 说明: 1: 元组变量还是一个变量,只不过表现方式和其他变量不一样 2:()括号里面可以放入N个变量组成 例子; import Foundation /* A是元组变量,()里面放着 整形 和字符串 元组类型为 整形和字符串 组成 */ var A = (1,"swift”)//元组变量A 由 整形和字符串 组成 println(A) 运行结果 ( 1 , swift) mport Foundation var B = 12 /* 定义一个元组,元组变量为C , ()里面放 整形变量B 和字符串。 元组类型有 整形 和 字符串组成 */ var C = (B,"Swift") //元组变量B 由 整形和字符串组成 println(C) 运行结果 ( 12 , Swift) 元祖访问方式 1: 匿名元组变量来访问 说明: 1.1 匿名元组变量和定义好的元组变量参数必须一致 1.2 需要元组中的个别值,可以使用(_)来忽略不需要的值 例子(1.1) import Foundation var A = (1,"Swift") //元组变量A 由 整形和字符串组成 /* 1: A 是元组变量,由整形和字符串组成 2:(B,C)是一个匿名元组变量 3:元组变量A 所对应的值

swift - 数据缓存一优雅的使用UserDefaults与plist表格进行数据存储

匿名 (未验证) 提交于 2019-12-03 00:38:01
UserDefaults是iOS中提供的一套最为基础的持久化方式,一般用于存储用户的基本信息 直接上代码: // 最简单的使用于存取 func userDefaultsSave() -> Void { let user: UserDefaults = UserDefaults . standard /*基础的可存储的类型*/ set ( URL (string: "https://www.baidu.com" ), forKey: "url" ) set ( "anyObject" , forKey: "any" ) set ( true , forKey: "bool" ) set ( Double ( 10 ), forKey: "double" ) set ( Float ( 10 ), forKey: "float" ) set ( Int ( 10 ), forKey: "int" ) /*数据读取*/ let url: URL = user. url (forKey: "url" )! let any: Any = user. object (forKey: "any" )! let bool: Bool = user. bool (forKey: "bool" ) let double: Double = user. double (forKey: "double"

swift 获取网络视频生成视频截图

匿名 (未验证) 提交于 2019-12-03 00:17:01
生成视频截图代码: DispatchQueue.global().async { //获取网络视频 let url = self.videoImgUrlData[i] let videoURL = URL(string: url) let avAsset = AVURLAsset.init(url: videoURL!, options: nil) ///生成视频截图 let generator = AVAssetImageGenerator(asset: avAsset) generator.appliesPreferredTrackTransform = true generator.apertureMode = AVAssetImageGenerator.ApertureMode.encodedPixels let time = CMTimeMakeWithSeconds(0.0, preferredTimescale: 600) var actualTime:CMTime = CMTimeMake(value: 10, timescale: 10) var imageRef:CGImage? var imageUIs:UIImage? do{ imageRef = try generator.copyCGImage(at: time, actualTime:

Swift 元组 Tuple

匿名 (未验证) 提交于 2019-12-02 23:47:01
/*--> */ /*--> */ /*--> */ /*--> */ /*--> */ /*--> */ /*--> */ /*--> */ /*--> */ /*--> */ let infoArray:[ Any] = [ "jack", 18, 1.88] let infoName= infoArray [ 0 ] as ! String //此处为Any类型强转为String类型 print (infoName . count ) let infoDict:[ String: Any]=[ "name": "jack", "age": 18] let dictName= infoDict [ "name" ] as ! String //此处为Any类型强转为String类型 print (dictName . count ) //使用数组或者字典取出的类型为Any类型 //使用元组保存信息,能头准确的推导出数据类型 //写法一: let infoTuple1=( "jack", 18, 1.88) let tupleName= infoTuple1. 0 let tupleAge = infoTuple1. 1 let tupleHeight = infoTuple1. 2 //写法二:使用别名 let infoTuple2=(name: "jack",age: 18

Swift面试题

柔情痞子 提交于 2019-12-02 18:37:40
class 和 struct 的区别 1.struct是值类型,class是引用类型。 值类型的变量直接包含它们的数据,对于值类型都有它们自己的数据副本,因此对一个变量操作不可能影响另一个变量。 引用类型的变量存储对他们的数据引用,因此后者称为对象,因此对一个变量操作可能影响另一个变量所引用的对象。 2.二者的本质区别: struct是深拷贝,拷贝的是内容;class是浅拷贝,拷贝的是指针。 3.property的初始化不同: class 在初始化时不能直接把 property 放在 默认的constructor 的参数里,而是需要自己创建一个带参数的constructor;而struct可以,把属性放在默认的constructor 的参数里。 4.变量赋值方式不同: struct是值拷贝;class是引用拷贝。 5.immutable变量: swift的可变内容和不可变内容用var和let来甄别,如果初始为let的变量再去修改会发生编译错误。struct遵循这一特性;class不存在这样的问题。 6.mutating function: struct 和 class 的差別是 struct 的 function 要去改变 property 的值的时候要加上 mutating,而 class 不用。 7.继承: struct不可以继承,class可以继承。 8

Swift、C和C 混编(二)

本秂侑毒 提交于 2019-12-02 05:06:47
上一篇 写了Swift、C、C++混合调用的情况,对于这些简单的调用我想大家已经有了基本的技能了。那么接下来我们在来看看怎么在swift里使用c数组。对于这个数组。对于指针我们可以直接赋值,并且也可以直接读取,那么对于数组呢,也是这样么。我们来看看。怎么样读取。 测试环境: xcode: 11.1 swift 版本: 5.0 我们先创建一个工程命名为SwiftDemo。然后我们创建一个C++文件命名为CPersomModel。在.hpp里定义下面的代码: struct CPersonModel { char *name; char birthday[20]; int age; }; struct CPersonModel* createModel(); 在实现的.cpp里我们实现如下: struct CPersonModel* createModel(){ CPersonModel *model = new CPersonModel(); model->name = new char(); const char *name = "张三"; stpcpy(model->name, name); const char *birthday = "1990-05"; stpcpy(model->birthday, birthday); model->age = 30; return