swift学习快速入门

来源:互联网 发布:长者之森乐芙兰 淘宝 编辑:程序博客网 时间:2024/05/22 01:55

一、基本类型的定义或声明

  变量:定义变量用 var 关键字标注

   例:

   var  str1 = "vincent"

   var i=5

   var 陈文 = 4//(不推荐使用中文作为变量)

   //swift 的每一句语句后面可以不使用 ";"  ,用了也可以,看个人习惯吧

   //以上可看出swift中可以不标注数据类型,编译器自动根据变量值来判断数据类型(个人不推荐不标注类型,

        1.标注类型对变量类型一目了然 2.后面数据处理会麻烦)

  //如:var m     

 //          m=5    ( 这种赋值方式是错误的,swift根据值来判定类型,所以不在m后面赋值就识别不了m的类型)


  //以下我们来学类型标注的变量定义方式(注意标注类型的类型一般首字母要大写如:Int Float Double....)   

    var a:Int = 9

     var b:Float = 9.2

     var c:String = "博看文思"

     var m:Int

      m=2;//(这样就可以先定义后赋值了)

  二、常量

        用let关键字标注 (类似于 c 语言的 const)

        let d = 5 //一旦定义d的就不可改变,这也是为了保护d的值

三、swift的基本数据类型

               

 基本数据类型

     对比c语言(常用数据类型)整型实型字符型

     swift的数据类型很简单,分  整形Int.short...等   小数类型:Float.Double.等和c语言一样

     而swift的字符放在哪里呢? swift放入字符以一种结构体的形式 和类的形式储存起来以下会介绍

    

   var e:Int16 =24//值不超过216次方其中int类型有 int8 int16 int32 int64 选择,入不标注位数如:int 就默认是int32,其他类型类似

   var h:Float32 = 96.23

   var iss:Double =4

 //数据溢出

  let overvalue:Int8 =Int8.max/3   //int8.max是去Int8的数值最大值

   overvalue = 100*overvalue;//超过int8的最大范围,编译出错

 //数据转换

   var number1:Int =5

   var number2:Float =5.15

   var number3 = number1 +Int(number2

//swift中不同的类型的数据不可以操作,需要类型转换,所以swift对数据的安全性更高了

//bool类型

    var flag:Bool =true;

    println("hh");

    if flag {println("hh")}

    if flag==true{println("hh")}

//Bool类型和c一样,只有两个值,是0(false)和1(true)

//Bool的使用一般在if else ... 判断的条件形式出现


//元祖(对应的c语言的结构体)

  //初始化

   var st = {"vincent",24,120}//例如我储存一个的名字“vincent”,年龄 24 ,体重 120.5

//输出

   println(st.0)

   println(st.1)

   println(st.2)

//等效

   var st1:(String,Int,Double) = ("vincent",24,120.5)

 或

   var (name,age,average) = st

    println(name)

   

//可选值  optional(有值 nil

   //定义

   var  optionalvalue:Int?  

   var optionalvalue1:Optional<Int>  

   var sss:Int

   println(optionalvalue);

  可选值optional类型看似没用但是它确实在UI设计中最常用的所以不要忽视

   Optional也是Objective-C没有的数据类型,是苹果引入到Swift语言中的全新类型,它的特点就和它的名字一样:可以有值,也可以没有值,当它没有值时,就是nil。此外,Swift的nil也和Objective-C有些不一样,在Objective-C中,只有对象才能为nil,而在Swift里,当基础类型(整形、浮点、布尔等)没有值时,也是nil,而不是一个初始值,没有初始值的值,是不能使用的,这就产生了Optional类型。定义一个Optional的值很容易,只需要在类型后面加上问号(?)就行了(百度)

//显示拆包

   var optionalvalue3:String?="hello word";

    println(optionalvalue3)


//隐式拆包

var optionalvalue2:String! ="你好!";

optionalvalue2

三、运算符

    数学运算符 + - * / %

   var n1 = 3

   var n2 = 4;

   var result:Float =Float(n1)/Float(n2);

  1.求余  %

  var n3:Float = 3.15

  var n4:Float = 1.6

  result = n3 % n4;

  2.溢出

  var  n5:Int8 = 127

  var n6:Int8 = 2

  var n7 = n5+n6  //int8 的范围是 0~127 所以超出了int8的范围就编译报错,所以我们在选择类型是要注意处理数据的范围!


//赋值运算符 = += ...(与c一样)

var n8 = 9

n8 += 3


//关系运算符 > < >= <= == != ?:与c一样

var n9=10

n8 < n9;

var isTrue:Bool = n8<n9

n9>n8 ? n9<n8 :n9 >n8


//逻辑运算符 || (或者) &&  (并且)与c一样

if n8 < n9 || n8 > n9 {println("true")}


//区间运算符

for i in 1 ... 5{println("i=\(i)")}与for 类似从运行的次数是5次

 for i in 1 ..< 5{println("i=\(i)")}  4次

//不过swift中还是有for语句的

 二进制运算(开发过程很少用到,所以我简单介绍,如有想知道的请百度或者私我)

    位运算符:位运算符十一二进制bit为单位运算的

       & :位与(同1才加1

       | :位或  (有1才加1

       ^ :异或 (补位,相同为0,不同为1

       ~ :位反

       >> :右移   (移动补0

       << :左移   (移动补0

如:

   var x:UInt8 =0b10110010

   var y:UInt8 =0b01011110

   

    x & y

    x | y

    x ^ y

    x<<3  

    x>>3

//下面介绍字符和字符串的储存方式

//结构体

  var str3:String ="123"

  var str2:String ="123"

   println( str3 ==str2);(相等)


// 类(objective相同)

var str4:NSString ="123"

var str5:NSString ="123"

var str6:NSString ="123"

println( str4 === str5);(不等)

 因为NSString是一指针地址的形式把数据储存起来的 


 四、字符窜:

     字符窜是人类语言文字在计算机的一种最为直观的体现形式,字符窜是有字符组成

    swift语言采用unicode编码,这意味着swift的字符可以涵盖几乎所有我们知道的字符

    Unicode编码可以有单字节编码,也可以双字节编码,更更可以四字节编码,这就是swift的强大之处


//1.字符 用character 类型

var c2:Character"文"

//swift中字符依然是双括号括起来

var c3:Character""

//中文可以表示字符

var c4:Character"大笑";

//表情可以表示字符

var c5:Character =" ";

if c2 == c3{ println("true")}输出是true


//2.字符窜

//初始化一个字符窜

var string1 = "你好吗?"

var string2:String ="swift"


//创建一个空得字符窜

    3种中形式

    1.var string3:String =""

    2.var string31 = ""

    3.var string4 = String()



//4.表情

  ar string5 = "大笑上就要过年了!偷笑O(∩_∩)O~哈哈再见工作";


//5.求字符的长度

var length = countElements(string5)(求字符的长度大家都知道它对字符窜进行处理的意义吧!我只能说很重要,还能说的十真的很重要)


//6.字符窜操作

//6.1.拼接

     var string6 = "bai"//定义

     var string7:String ="du"//定义

     var string71:String =""//定义

    字符串与字符串

   第一种形式: var string8 = string6 +string7 //拼接  结果是   baidu

    var c3:Character""

    字符串与字符

    第二种形式:   string7.append(c3)//c3是字符形式  append()是系统函数,在字符串后面拼接字符

    println(string7)  结果: du文

        字符串与字符

     第三种形式:  var string9 = string7 + String(c3) du文文


//

var string10 = "swift"

string10.stringByAppendingFormat("%@%d%@","feuw",1,"grg")  结果:swiftfeuw1grg



//http//www.baidu.com/

//常用的拼接形式

//拼接网站域名

var domainStr = "http://www.baidu.com"

var filePath = "media/pic"

var file = "20150206_normal.png"

var urlString = "\(domainStr) /\(filePath)/\(file)"  结果:http://www.baidu.com /media/pic/20150206_normal.png


println("连接为:\(urlString)")


// /Users/3013/Desktop

var path = "/Users/3013/Desktop"

var filename = "ios/test2"

//var str:NSString = path.stringByAppendingPathComponent(filename)  stringByAppendingPathComponent是一个拼接函数


//var str11:NSString? = path.stringByAppendingPathExtension("txt")  stringByAppendingPathExtension拼接函数(优势是如果拼接空得也不报错)

//截取

// 先给区间再截取

                   前进

var index = advance(urlString.startIndex,5)//从头截取

var index2 = advance(urlString.endIndex, -5)//后面往前截


urlString.substringToIndex(index)         结果:http:

urlString.substringFromIndex(index)      结果://www.baidu.com /media/pic/20150206_normal.png

var length2 = countElements(urlString)//countElement:元素长度  这个函数经常用到大家注意了

urlString.substringToIndex(index2)

urlString.substringFromIndex(index2)// substring:子串



//常用

var range:Range = Range(start: index, end: index2)

urlString.substringWithRange(range)//子串区间


var subCharater:Character =urlString[index2]//截取到得第一个字符


for var i=0;i<10; i++ {

    index = advance(urlString.startIndex, i)

    urlString.substringFromIndex(index)

    urlString[index]

    }

//20.字符窜比较

var string11 = "baidu"


var string12 = "baidu"


//swift中直接用关系运算符比较字符窜

if string11 ==string12 {println("大于")}//直接逐位比较字符assci大小




var string13:NSString ="baidu"

var string14:NSString ="baidu"


if string13 ===string14{println("equal")}


string13 = string14;

if string13 ===string14{println("equal")}//全等指针和内容都相等




//讲数字字串转换成数字

var string15 = "12.15"

var number:Int? = string15.toInt()


//var number:Float? = string15.



//字符窜前后缀


//前缀

if string11.hasPrefix("b")

{

    println("yes")

}


//后缀

if string11.hasSuffix("dom")

{

    println("yes")

}

//应用找出一个目录中有多少图片(.png .jpg)有多少歌曲(.mp3


//大小写转换

string11.lowercaseString//小写

string12.uppercaseString//大写



























1 0