文章目录
  1. 1. swift学习笔记
    1. 1.1. title: Swift学习笔记date: 2020-04-29categories: swifttags: swift学习
      1. 1.1.1. Swift学习笔记
        1. 1.1.1.1. 一. swift介绍
        2. 1.1.1.2. 二. 基础语法
          1. 1.1.1.2.0.1. 1.变量
          2. 1.1.1.2.0.2. 2.常量
          3. 1.1.1.2.0.3. 3.String
          4. 1.1.1.2.0.4. 4. 字符串字面量可以包含以下特殊字符:
        3. 1.1.1.2.1. 5. 集合类
          1. 1.1.1.2.1.1. 6,函数的定义

swift学习笔记


title: Swift学习笔记
date: 2020-04-29
categories: swift
tags: swift学习

Swift学习笔记

一. swift介绍

swift语言已经出来有一年多了,去年对于基础只是草草的学了些,现在正好沉下心来,深入学习这门语言。
对于这门语言的详细介绍,我就不多说了,推荐大家看这里:

swift github学习区

二. 基础语法

  • 基本类型、声明语法
1.变量

obj-c:

     Type *typeInstance;<br/>
    NSString *str =  “”;<br/>
     NSString *str2 = [NSString stringWithFormat: “aaaa% “, “bbb”];

swift:

    var a;//(直接这样声明变量是不允许的,必须要给一个初始值,以便来确定他的类型)

<!--more-->
var str = "Hello, playground"
/** 
* var声明与let声明变量的区别:
* 1,var声明值可变的变量,let则声明不可变的常量用的居多
*
**/
var myVarible = 42
myVarible = 50;

let myConstant = 42;
//注释打开则会编译出错
//myConstant = 50

swift 的变量类型可以在声明初始值中直接通过初始值类型来确定

Type Annotations

如果想声明一个变量或者常量,但又暂时没有赋予初始值(分配内存空间),则用这种方式:

eg:

var welcomeMessage:String
var typeName:Type

变量声明可以用任何的字符来进行声明:

let π = 3.14159
let 你好 = "你好世界"
let 🐶🐮 = "dogcow”
2.常量
//obj-c:
const  int a=10;
//swift:
let a= 10;
3.String

String类型就比obj-c方便太多了,终于不用每次拼装字符串那么麻烦了

obj-c对一个字符做拼接:
NSString *priceStr = [NSString stringWithFormat: “价格:%ld 元”,250];

swift:

var greeting = "good bye !";
var userName = "sam.hu";

let youSays = "say:\(greeting),my name is \(userName)";

//obj-c的例子可以这样写
var price = 250;
var priceStr = "价格:\(price) 元";

swfit 的String是架在foundation 的NSString类的上的
故如果在在使用foundation的NSString中使用swift的string类是可以的
比obj-c自定义String更方便

字符串字面量的特殊字符 (Special Characters in String Literals)

4. 字符串字面量可以包含以下特殊字符:

转义字符\0(空字符)、\(反斜线)、\t(水平制表符)、\n(换行符)、\r(回车符)、"(双引号)、'(单引号)。

Unicode 标量,写成\u{n}(u为小写),其中n为任意一到八位十六进制数且可用的 Unicode 位码。

下面的代码为各种特殊字符的使用示例。
wiseWords常量包含了两个双引号。
dollarSign、blackHeart和sparklingHeart常量演示了三种不同格式的 Unicode 标量:

let wiseWords = "\"Imagination is more important than knowledge\" - Einstein"
// "Imageination is more important than knowledge" - Enistein
let dollarSign = "\u{24}"             // $, Unicode 标量 U+0024
let blackHeart = "\u{2665}"           // ♥, Unicode 标量 U+2665
let sparklingHeart = "\u{1F496}"      // 💖, Unicode 标量 U+1F496
  • String可以将字符进行迭代:
 for character in "Dog!🐶".characters {
            print(character)
        }
        
5. 集合类
  • Array

初始化:
obj-c:

    NSArray *array1 =  [ "aa", "bb", "cc"];
    NSArray *array2 = [NSArray arrayWithObjects: "第一栏", "第二栏", "第三栏", nil];
    NSArray *array3 = [NSArray alloc] init];//NSArray 是不可变数组,故需要初始化时分配空间大小,这样实例化一个array一般是没有意义的
    
    NSMutableArray *array4 = [[NSMutableArray alloc] init];
    [array4 addObject: "sss"];

swift:

var shoppingList: [String] = ["Eggs", "Milk"] //Swift 2.1 官方教程上是var shoppingList:String[] 这种声明,发现在编译器里是错误的
或者
var shoppingList = ["Eggs", "Milk"]

//在swift中没有可变和不可变数组的概念
//        shoppingList += "Baking Powder" //这种方法添加数组是不行的
        shoppingList += ["Baking Powder"]
        //你还可以以数组的方式添加item
        shoppingList += ["Chocolate Spread", "Cheese", "Butter"]
        //把第5、6个元素内容分别替换成Bananas、Apples,第7个元素被切掉了
        shoppingList[4...6] = ["Bananas", "Apples"]
        //将会返回["Eggs", "Milk", "Flour", "Baking Powder", "Bananas", "Apples"]
        
  //遍历,for in
  for item in shoppingList{
            print(item);
  }
  
  //如果需要下标值 for enumerate
  for (index,value) in shoppingList.enumerate(){
            print("index:\(index) value:\(value)")
        }
        
   let apples = shoppingList.removeLast()
        print(apples)
        //oc的数组里的元素类型必须一样,而swift可以不同,用let初始化一个数组
let arrays = ["cars",20,true]

        print(arrays)    
6,函数的定义

obj-c:

-(NSString *)testFunction:(NSString*)name with:(Integer)room{

}

swift:

func testFunction(p1:int,p2:String)->int
{
  return p1
}

//return fun

//调用:
func(2,”B")

定义的函数还是返回函数

obj-c:

-(int)testA:(NSString *)p1 param2: (int) p2
{
     return 250;
}

5,类的定义
不再分头文件和m文件了
构造函数还是init

obj-c:

    //TestClass.h
     inteface TestClass:NSObject
    
     end
    
    //TestClass.m
     implementation TestClass
    
     end

swift:

class TestClass: NSObject{


}
文章目录
  1. 1. swift学习笔记
    1. 1.1. title: Swift学习笔记date: 2020-04-29categories: swifttags: swift学习
      1. 1.1.1. Swift学习笔记
        1. 1.1.1.1. 一. swift介绍
        2. 1.1.1.2. 二. 基础语法
          1. 1.1.1.2.0.1. 1.变量
          2. 1.1.1.2.0.2. 2.常量
          3. 1.1.1.2.0.3. 3.String
          4. 1.1.1.2.0.4. 4. 字符串字面量可以包含以下特殊字符:
        3. 1.1.1.2.1. 5. 集合类
          1. 1.1.1.2.1.1. 6,函数的定义