设为首页 加入收藏

TOP

Swift 与Objective-c语法参照(一)
2015-11-19 23:06:54 来源: 作者: 【 】 浏览:21
Tags:Swift Objective-c 语法 参照

Swift已经推出了一段时间了,今天来总结一下Swift与Objective-c(以下简称OC)的语法有哪些不同。

1.常量与变量:

在Swift中定义常量和变量很简单,常量使用let关键字,变量使用var关键字。

?var numberOfRows = 30
let maxNumberOfRows = 100

在OC中我们声明一个变量的时候需要指定数据类型:

const int count = 10;
double price = 23.55;
NSString *myMessage = @"Objective-C is not dead yet!";

但是在Swift中我们不用,虽然Swift是强类型语言,但是它可以根据赋值进行类型推断:

et count = 10
// count会被识别为Int
var price = 23.55
// price会被识别为Double
var myMessage = "Swift is the future!"
// myMessage会被识别为String

当然在Swift中写上变量名也不会有任何问题:

var myMessage : String = "Swift is the future!"

2.Swift中不用再写分号了!

在OC中你需要在每一句的后面写上“;”以表达结束,不然会报错,在Swift中你不需要再写分号了,当然你写上也没有问题。

var myMessage = "No semicolon is needed"

3.String

在Swift中字符串的类型是String,不论你定义的是常量字符串还是变量字符串。

?let dontModifyMe = "You cannot modify this string"
var modifyMe = "You can modify this string"

在OC中你需要使用NSString和NSMutableString来区分字符串是否可以被修改。

在Swift中连接两个字符串组成新字符串非常方便,使用“+”:

let firstMessage = "Swift is awesome. "
let secondMessage= "What do you think?"
var message = firstMessage + secondMessage
println(message)

println是Swift中一个全局的打印方法。

在OC中我们使用stringWithFormat方法:

NSString *firstMessage = @"Swift is awesome. ";
NSString *secondMessage = @"What do you think?";
NSString *message = [NSString stringWithFormat:@"%@%@", firstMessage, secondMessage];
NSLog(@"%@", message);

在OC中要判断两个字符串是否相同你不能用“==”,你需要使用方法isEqualToString方法,但是在Swift中你可以使用“==”来判断字符串是否相同。

?var string1 = "Hello"
var string2 = "Hello"
if string1 == string2 {
    println("Both are the same")
} 



4.Array数组

数组的用法Swift和OC差不多,我们来看示例:

在OC中:

?NSArray *recipes = @[@"Egg Benedict", @"Mushroom Risotto", @"Full Breakfast", @"Hamburger",
@"Ham and Egg Sandwich"];

在Swift中:

?var recipes = ["Egg Benedict", "Mushroom Risotto", "Full Breakfast", "Hamburger", "Ham and Egg
Sandwich"]

在OC中你可以向NSArray和NSMutableArray中插入任意类型的参数,但是在OC中只能插入相同的参数。

和NSArray相似,Swift中的Array也有很多方法,比如count方法返回数组中的元素个数:

?var recipes : [String] = ["Egg Benedict", "Mushroom Risotto", "Full Breakfast", "Hamburger",
"Ham and Egg Sandwich"]
?var numberOfItems = recipes.count
// recipes.count will return 5


在OC中你使用NSMutableArray中的方法addObject来增加数组中的元素,Swift中的方法更简单,你可以使用“+=”,比如:

recipes += ["Thai Shrimp Cake"]
不过请注意这个方法是数组间的,如果一个单个元素要加入数组中请在元素外面增加[]。

要取出或者替换数组中的元素,使用索引,这点跟OC中相同:

?var recipeItem = recipes[0]
recipes[1] = "Cupcake"

在Swift中可以使用Range来表示范围:比如
recipes[1...3] = ["Cheese Cake", "Greek Salad", "Braised Beef Cheeks"]
这里替换的是recipes中的第二到第四个元素。

5.Dictionary字典

字典是一种集合类型,由键值对组成,这一点和OC中的NSDictionary很类似,请看示例:

OC中:

?NSDictionary *companies = @{@"AAPL" : @"Apple Inc", @"GOOG" : @"Google Inc", @"AMZN" :
@"Amazon.com, Inc", @"FB" : @"Facebook Inc"};

Swift中:

?var companies = ["AAPL" : "Apple Inc", "GOOG" : "Google Inc", "AMZN" : "Amazon.com, Inc",
"FB" : "Facebook Inc"]
你也可以声明它的字典类型:

?var companies: Dictionary
    
      = ["AAPL" : "Apple Inc", "GOOG" : "Google Inc",
"AMZN" : "Amazon.com, Inc", "FB" : "Facebook Inc"]
    

要遍历一个字典,需要使用元组来保存每一次循环的字典中的信息:

for (stockCode, name) in companies {
    println("\(stockCode) = \(name)")
}

你也可以单独遍历字典中的键或者值:

for stockCode in companies.keys {
    println("Stock code = \(stockCode)")
}
for name in companies.values {
    println("Company name = \(name)")
}

如果想给字典添加新的键值对,那么使用如下语句:

companies["TWTR"] = "Twitter Inc"

6.Class类

在OC中创建类的话,会得到两个文件,一个接口文件(.h文件)和一个实现文件(.m文件)。

而在Swift中生成类只有一个文件.swi

首页 上一页 1 2 3 4 下一页 尾页 1/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇linux用c语言获取系统启动时长 下一篇C语言中的errno(错误报告)用法

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: