iOS Swift 基础四

来源:互联网 发布:天神互动怎么样 知乎 编辑:程序博客网 时间:2024/06/05 17:08

1.字典

/*

字典定义键值对

OC:

NSDictionary *dict = [NSDictionary dictionaryWithObject:@"lnj" forKey:@"name"];

NSLog(@"%@", dict);


NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"name", @"lnj", @"age", @30, nil];

NSLog(@"%@", dict);


NSDictionary *dict = @{@"name":@"lnj", @"age":@30};

NSLog(@"%@", dict);

*/


// key一定要是可以hash(String, Int, Float, Double, Bool), value没有要求

var dict = ["name":"lnj""age":30]

print(dict)


var dict1:Dictionary = ["name":"lnj""age":30]

print(dict1)


var dict2:Dictionary<String,Any> = ["name":"lnj""age":30]

print(dict2)


var dict3:[String:Any] = ["name":"lnj""age":30]

print(dict3)


var dict4:[String:Any] = Dictionary(dictionaryLiteral: ("name""lnj"), ("age"30))

print(dict4)


//不可变数组:

var dict5 = [:]

//可变数组:

let dict6  = [:]


/*

字典操作

OC:

1.获取

NSDictionary *dict = @{@"name":@"lnj", @"age":@30};

NSLog(@"%@", dict[@"name"]);


2.修改

NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"name", @"lnj", @"age", @30, nil];

dict[@"name"] = @"iversion";

NSLog(@"%@", dict[@"name"]);


NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"name", @"lnj", @"age", @30, nil];

[dict setObject:@"iversion" forKey:@"name"];

NSLog(@"%@", dict[@"name"]);

*/

//1.获取

var dict7 = ["name":"lnj""age":30]

print(dict7["name"]!)


//2.修改

var dict8 = ["name":"lnj""age":30]

dict8["name"] = "iverson"

print(dict8["name"]!)


var dict9 = ["name":"lnj""age":30]

dict9.updateValue("iverson", forKey: "name")

print(dict9["name"]!)


// 3.更新

// updateValue返回一个可选类型如果字典中不存在需要更新的key, 那么返回nil, 如果存在返回原始值

var dict10 = ["name":"lnj""age":30]

if let orignal = dict10.updateValue("iverson", forKey: "name")

{

    print(dict10["name"]!)

    print(orignal)

}


// updateValue返回一个可选类型如果字典中不存在需要更新的key, 那么返回nil并且会将新的键值对添加到字典中

var dict11 = ["name":"lnj""age":30]

if let orignal = dict11.updateValue("iverson", forKey: "abc")

{

    print(dict11["abc"]!)

    print(orignal)

}

print(dict11)


/*

4.添加

OC:

NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"name", @"lnj", @"age", @30, nil];

dict[@"height"] = @175;

NSLog(@"%@", dict);



NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"name", @"lnj", @"age", @30, nil];

[dict setObject:@175 forKey:@"height"];

NSLog(@"%@", dict);

*/


var dict12 = ["name":"lnj""age":30]

dict12["height"] = 175;

print(dict12)


/*

5.删除

OC:

NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"lnj", @"name", @30, @"age", nil];

[dict removeObjectForKey:@"name"];

NSLog(@"%@", dict);


NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"lnj", @"name", @30, @"age", nil];

[dict removeAllObjects];

NSLog(@"%@", dict);

*/

var dict13 = ["name":"lnj""age":30]

dict13.removeValueForKey("name")

print(dict13)



// removeValueForKey返回一个可选类型如果字典中不存在需要删除的key, 那么返回nil并且不会执行任何操作如果存在则删除key对应的值并且返回被删除的值

var dict14 = ["name":"lnj""age":30]

if let orignal = dict14.removeValueForKey("names")

{

    print(dict14)

    print(orignal)

}

print(dict14)


var dict15 = ["name":"lnj""age":30]

dict15.removeAll(keepCapacity: true)


/*

遍历字典

OC:

NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"lnj", @"name", @30, @"age", nil];

[dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {

NSLog(@"key = %@ value = %@", key, obj);

}];


NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"lnj", @"name", @30, @"age", nil];

NSArray *keys = [dict allKeys];

for (NSString *key in keys) {

NSLog(@"%@", key);

}


NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"lnj", @"name", @30, @"age", nil];

NSArray *values = [dict allValues];

for (NSString *value in values) {

NSLog(@"%@", value);

}

*/


var dict16 = ["name":"lnj""age":30]

for (key , value) in dict16

{

    print("key = \(key) value = \(value)")

}


var dict17 = ["name":"lnj""age":30]

for key in dict17.keys

{

    print("key = \(key)")

}


var dict18 = ["name":"lnj""age":30]

for value in dict18.values

{

    print("value = \(value)")

}


2.if语句


/*

if语句基本使用

OC:

int age1 = 10;

int age2 = 20;

int max;

max = age2;

if (age1 > age2) {

    max = age1;

}

NSLog(@"%d", max);


if (age1 > age2) {

    max = age1;

}else

{

    max = age2;

}

NSLog(@"%d", max);


如果只有一条指令if后面的大括号可以省略


Swift:

if 条件表达式 {指令}   if 条件表达式 {指令} else{指令}

0.if后的圆括号可以省略

1.只能以bool作为条件语句

2.如果只有条指令if后面的大括号不可以省略

*/


var age1:Int

var age2:Int

var max:Int

max = age2;

if age1 > age2

{

    max = age1

}

print(max)


if age1 > age2

{

    max = age1;

}else

{

    max = age2;

}

print(max)


/*

多分支

OC:

float score = 99.9;

if (score >= 90) {

    NSLog(@"优秀");

}else

{

if (score >= 60) {

    NSLog(@"良好");

}else

{

    NSLog(@"不给力");

}

}


if (score >= 90) {

    NSLog(@"优秀");

}else if (score >= 60)

{

    NSLog(@"良好");

}else

{

    NSLog(@"不给力");

}

*/


var score = 99.9;

if score >= 90

{

    print("优秀")

}else if score >= 60

{

    print("良好")

}else

{

    print("不给力")

}


3.while

/*

while循环

格式:while(循环保持条件){需要执行的语句}

OC:

int i = 0;

int sum = 0;

while (i <= 10) {

    sum = i++;

}


while (i <= 10)

    sum = i++;


NSLog(@"%d", sum);

如果只有一条指令while后面的大括号可以省略


Swift:

0.while后的圆括号可以省略

1.只能以bool作为条件语句

2.如果只有条指令while后面的大括号不可以省略

*/


var i:Int = 0

var sum:Int = 0

while (i <= 10)

{

    sum = i++

}

print("\(sum)")


var i1:Int = 0

var sum1:Int = 0

while i1 <= 10

{

    sum1 = i1++

}

print("\(sum1)")


/*

do while循环

格式:do while(循环保持条件) {需要执行的语句}

OC:

int i = 0;

int sum = 0;

do {

    sum = i++;

} while (i <= 10);

NSLog(@"%d", sum);


int i = 0;

int sum = 0;

do

    sum = i++;

while (i <= 10);

NSLog(@"%d", sum);

如果只有一条指令if后面的大括号可以省略


Swift2.0之后变为 repeat while, do用于捕捉异常

0.while后的圆括号可以省略

1.只能以bool作为条件语句

2.如果只有条指令do后面的大括号不可以省略

*/


var i2:Int = 0

var sum2:Int = 0

repeat{

    sum2 = i2++;

}while(i2 <= 10)

print(sum2)


var i3:Int = 0

var sum3:Int = 0

repeat{

    sum3 = i3++;

}while i3 <= 10

print(sum3)


4.for循环

/*

for循环

格式: for (初始化表达式;循环保持条件;循环后表达式) {需要执行的语句}

OC:

int sum = 0;

for (int i = 0; i <= 10; i++) {

    sum = i++;

}

NSLog(@"%d", sum);


int sum = 0;

int i = 0;

for (; i <= 10; i++) {

    sum = i++;

}

NSLog(@"%d", sum);


int sum = 0;

int i = 0;

for (; i <= 10; ) {

    sum = i++;

    i++;

}

NSLog(@"%d", sum);



int sum = 0;

int i = 0;

for ( ; ; ) {

    sum = i++;

i++;

if (i > 10) {

    break;

}

}

NSLog(@"%d", sum);


int sum = 0;

int i = 0;

for ( ; ; ) {

    sum = i++;

    i++;

NSLog(@"%d", sum);

}

如果只有一条指令for后面的大括号可以省略

for后面的三个参数都可以省略如果省略循环保持语句那么默认为真



Swift:

0.for后的圆括号可以省略

1.只能以bool作为条件语句

2.如果只有条指令for后面的大括号不可以省略

3.for后面的三个参数都可以省略如果省略循环保持语句那么默认为真


*/

var sum:Int = 0

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

{

    sum = i++

}

print(sum)


var sum1:Int = 0

var i1 = 0

for  ; i1 <= 10 ; i1++

{

    sum1 = i1++

}

print(sum1)


var sum2:Int = 0

var i2 = 0

for ; i2 <= 10;

{

    sum2 = i2++

    i2++

}

print(sum2)



var sum3:Int = 0

var i3 = 0

for ; ;

{

    sum3 = i3++

    i3++

    if i3 > 10

    {

        break

    }

}

print(sum3)



/*

for in循环

格式: for (接收参数 in 取出的参数) {需要执行的语句}

for in含义(in)取出什么给什么直到取完为止

OC:

for (NSNumber *i  in @[@1, @2, @3, @4, @5]) {

    NSLog(@"%@", i);

}


NSDictionary *dict = @{@"name":@"lnj", @"age":@30};

for (NSArray *keys  in dict.allKeys) {

    NSLog(@"%@", keys);

}


NSDictionary *dict = @{@"name":@"lnj", @"age":@30};

for (NSArray *keys  in dict.allValues) {

    NSLog(@"%@", keys);

}


Swift:

for in 一般用于遍历区间或者集合

*/


var sum4:Int = 0

for i4 in 1...10 // 会将区间的值依次赋值给i

{

    sum4 += i4;

}

print(sum4)


for dict in ["name":"lnj""age":30]

{

    print(dict);

}


for (key, value) in ["name":"lnj""age":30]

{

    print("\(key) = \(value)")

}



/*

break: 跳出循环无论循环保持条件是否还为真都不会再执行循环

continue: 跳出本次循环如果循环保持条件还为真还会继续执行循环


OC:

NSArray *arr = @[@1,@3, @5, @7, @8];

for (NSNumber *num in arr) {

if ([num isEqualTo:@(7)]) {

    NSLog(@"找到幸运数字");

    break;

}

NSLog(@"没有找到幸运数字");

}


NSArray *arr = @[@1,@3, @5, @7, @8];

int count = 0;

for (NSNumber *num in arr) {

if (num.intValue % 2 != 0 ) {

    NSLog(@"不能被2整除");

    continue;

}

    NSLog(@"能被2整除");

    count++;

}

NSLog(@"count = %d", count);

*/


var arr:Array<Int> = [13578]

for num in arr{

    if num == 7

    {

        print("找到幸运数字")

        break

    }

    print("没有找到幸运数字")

}


var arr1:Array<Int> = [13578]

var count:Int = 0

for num in arr1{

    if num % 2 != 0

    {

        print("不能被2整除")

        continue

    }

    print("能被2整除")

    count++

}

print("count = \(count)")

1 0