打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
从现在,开始swift

从现在,开始swift

发表于3个月前(2014-10-15 19:13)   阅读(1057) | 评论(2 26人收藏此文章, 我要收藏
3

听云性能监测产品App、Server、CDN免费试用,绑定账号送京东卡

导语

苹果在2014的WWDC中推出了Swift 这一全新的编程语言,一时之间成为各大网站的头条和所有程序员的讨论热点,与可读性较差的Objective-C相比,这门融合了多种编程语言优点的语言得到了各大编程语言开发者的认可,并迫不及待想要学习这门全新的语言,而成为一名掌握iOS开发平台的程序员。

但是,还有一群人在暗自神伤,就是我们这群被Apple虐了千万遍,我们却待它如初恋的iOS开发者

  • “唉,一大波抢饭碗的人正在靠近”
  • “赶紧去学,不然就跟不上时代了啊”
  • “以前的代码怎么办,以前的类库怎么办”
  • “不学。我继续用的Objective-C”
  • ……

但是你还在五内郁结,已经有大把的开发者从发布的那天起就开始了swift之旅,而事实证明,这是一门优秀地语言,与OC可以完美结合,所以,你还在等什么,不要等到下一个正式项目,就是现在,不管你是新手还是老鸟,在做demo还是做正式项目,就是下一次 command + N,选择swift!

关于swift的语法请大家去看官方文档或是翻译

开始Swift

开发工具:XCode6

工程环境为 Objective-C

新建一个 Single View Application ,命名为 swiftTurialDemo1 ,Lauguage 选择 Objective-C **,

添加 AFNetworking 类库,如果你安装过 Cocoapods 按照如下方法添加,没有按照传统方法添加就可以了。

为其添加Podfile,内容为

pod 'AFNetworking', '~> 2.3.1'

关闭工程,用CocoaPods安装,重新打开 swiftTurialDemo1.xcworkspace

工程中有一个是OC代码控制的,我们做一个简单VC间传值,并使用 AFNetworking 请求网络数据一次,学习如何在Swift文件中调用OC代码以及如何在OC文件中调用swift代码

Main.storyboard 中添加一个 NavigationController ,将其作为 Initial View Controller ,并将 ViewController 作为它的 rootViewController

Command + N 新建一个 swift file,命名为 secondViewController, 点击 Next,会出现一个弹窗提示 Would you like to configure an Objective-C Bridging header? 这个文件便是来桥接 Objective-C代码,让你可以在 Swift 文件中调用OC代码,所以,选择 YES

打开 swiftTurialDemo1-Bridging-Header.h,此文件中存放需要在swift文件中调用的类,添加代码:

#import <AFNetworking/AFNetworking.h>

在Swift中调用OC的代码

打开 secondViewController.swift

替换为以下代码

tips: 关于!和?请大家看Swift文档中 隐式解析可选类型 (implicitly unwrapped optionals)

import UIKitclass secondViewController: UIViewController {    var aString: String!// 声明一个变量,如果不赋初值的话会报错,在末尾添加?或者!表示可选,添加?的话,在aString被赋值之前调用String的某个方法或者属性时是不被允许的,添加!的话就可以不用赋值做操作    override func viewDidLoad() {        super.viewDidLoad()        self.title = "second"        println("a string = \(aString)")        test() // 与C语言调用函数一样    }    func test() {        let urlString = "http://www.baidu.com"        var url = NSURL(string: urlString)// 将urlString设置为需要请求的接口地址即可        var request = NSURLRequest(URL: url)// alloc init操作在swift中的初始化方法为 类名() 打括号时会如initWith...方法一样给出提示列表        var operation : AFHTTPRequestOperation = AFHTTPRequestOperation(request: request)        operation.responseSerializer = AFJSONResponseSerializer()        operation.setCompletionBlockWithSuccess({ (operation, responseObject) -> Void in            println("success")            print(responseObject)        }, failure: { (operation, error) -> Void in            println("failure")        })        operation.start()    }}

打开 Main.storyboard , 添加一个 ViewController , 设置类为 secondViewController, 在 ViewController 上添加一个Button,标题改为 “跳转” 并添加跳转到 secondViewController 的segue.

这时运行项目,点击跳转,打印输出

a string = nilfailure

在OC文件中调用Swift代码

想要调用swift代码,同swift调用OC一样,也是需要桥接文件的,只是这个桥接文件,Apple已经帮我们创建好了,名为 “你的项目名称-swift.h”,你在工程中看不见,但是import之后跟踪是可以看到这个文件的,里面做了Swift对应OC代码的转换

打开 secondViewController.swift, 在 class 末尾添加一个方法

func log() {        println("log success");    }

打开 ViewController.m, 添加

#import "swiftTurialDemo1-Swift.h"
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{    UIViewController *VC = [segue destinationViewController];    if ([VC isKindOfClass:[secondViewController class]]) {        secondViewController *secondVC = (secondViewController *)VC;        secondVC.aString = @"pass a value";        [secondVC log];    }}

再次运行,打印输出结果为

log successa string = pass a valuefailure

你可以在这里下载到本文代码

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
StoryBoard学习(5):使用segue页面间传递数据
用storyBoard建立工程的传值方法
在一个项目中同时使用Swift和Objective-C代码混合编程的方法
苹果宣布Swift编程语言开源 支持Linux
苹果推新编程语言Swift:将取代Objective
这16种编程语言学会任何一种 再不愁找工作_编程语言_酷勤网
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服