• 1.CocoaPods的安装,使用命令行工具,且需要一个叫Ruby的工具:命令行工具的位置:启动台 - 其他 - 终端Ruby: 我们打开终端以后,输入 ruby -v,可以查看当前的ruby的版本,我没有升级ruby,使用系统自带的版本:...

    1.CocoaPods的安装,使用命令行工具,且需要一个叫Ruby的工具:

    命令行工具的位置:启动台 - 其他 - 终端
    Ruby: 我们打开终端以后,输入 ruby -v,可以查看当前的ruby的版本,我没有升级ruby,使用系统自带的版本:
    JiMideMacBook-Pro:~ jimi$ ruby -v
    ruby 2.3.3p222 (2016-11-21 revision 56859) [universal.x86_64-darwin17]

    2.安装:

    sudo gem install cocoapods
    pod setup
    你可以command+n新建一个终端窗口,执行cd ~/.cocoapods/进入到该文件夹下,然后执行du -sh *来查看文件大小,每隔几分钟查看一次,这个目录最终大小是1.6G。(CocoaPods的大小随着版本也会变化,1.6G是20180528的标准,也就是我写这篇博文的时间)
    当出现Setup completed的时候说明已经完成了。

    3.搜索第三方库:

    pod search AFNetworking
    复制代码
    Last login: Thu May 24 14:27:43 on ttys003
    JiMideMacBook-Pro:~ jimi$ ruby -v
    ruby 2.3.3p222 (2016-11-21 revision 56859) [universal.x86_64-darwin17]
    JiMideMacBook-Pro:~ jimi$ pod search AFNetworking
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    -> AFNetworking (3.2.1)
       A delightful iOS and OS X networking framework.
       pod 'AFNetworking', '~> 3.2.1'
       - Homepage: https://github.com/AFNetworking/AFNetworking
       - Source:   https://github.com/AFNetworking/AFNetworking.git
       - Versions: 3.2.1, 3.2.0, 3.1.0, 3.0.4, 3.0.3, 3.0.2, 3.0.1, 3.0.0,
       3.0.0-beta.3, 3.0.0-beta.2, 3.0.0-beta.1, 2.6.3, 2.6.2, 2.6.1, 2.6.0, 2.5.4,
       2.5.3, 2.5.2, 2.5.1, 2.5.0, 2.4.1, 2.4.0, 2.3.1, 2.3.0, 2.2.4, 2.2.3, 2.2.2,
       2.2.1, 2.2.0, 2.1.0, 2.0.3, 2.0.2, 2.0.1, 2.0.0, 2.0.0-RC3, 2.0.0-RC2,
       2.0.0-RC1, 1.3.4, 1.3.3, 1.3.2, 1.3.1, 1.3.0, 1.2.1, 1.2.0, 1.1.0, 1.0.1,
       1.0, 1.0RC3, 1.0RC2, 1.0RC1, 0.10.1, 0.10.0, 0.9.2, 0.9.1, 0.9.0, 0.7.0,
       0.5.1 [master repo]
       - Subspecs:
         - AFNetworking/Serialization (3.2.1)
         - AFNetworking/Security (3.2.1)
         - AFNetworking/Reachability (3.2.1)
         - AFNetworking/NSURLSession (3.2.1)
         - AFNetworking/UIKit (3.2.1)
    
    -> AFNetworking+AutoRetry (0.0.5)
       Auto Retries for AFNetworking requests
       pod 'AFNetworking+AutoRetry', '~> 0.0.5'
    :
    复制代码

    我们可以看到 AFNetworking 的 最新版本是3.2.1。

    至此,CocoaPods 安装成功。

    很高兴,我在安装过程中,没有遇到任何的坑,一路下来很顺利。

    推荐一篇博文,博主遇到来一些坑,如果大家有同样的问题,可以参考:

    https://www.jianshu.com/p/9e4e36ba8574

    下一篇,我们来具体的 把AFNetworking引入到我们 用Swift开发的 项目中。(与OC的引入略有区别)

    展开全文
  • 1.前面我们做了登录界面的UI,实现了网络请求,如果用户输入了错误的VIP号码,应该提示用户“VIP号码不正确”2.在Android里面,我们有Toast可以直接使用,在iOS里,貌似没有这样的原生控件,那么我们引入第三个开源...

    先看一下效果:


    1.前面我们做了登录界面的UI,实现了网络请求,如果用户输入了错误的VIP号码,应该提示用户“VIP号码不正确”

    1.前面我们做了登录界面的UI,实现了网络请求,如果用户输入了错误的VIP号码,应该提示用户“VIP号码不正确”

    2.在Android里面,我们有Toast可以直接使用,在iOS里,貌似没有这样的原生控件,那么我们引入第三个开源框架:

    Toast-Swift

    3.我们来修改一下 Podfile:

    /Users/jimi/Documents/iOS/Demo/LoginDemo/Podfile
    复制代码
    # 设置支持最低平台
    platform :ios, '8.0'
    target 'LoginDemo' do
    # 如果是Swift项目,需添加"use_frameworks!"
    use_frameworks!
    # 如果要使用固定版本 可以像下面这么写
    # pod 'AFNetworking', '~> 3.2.1'
    pod "AFNetworking"
    pod "SwiftyJSON"
    pod 'Toast-Swift', '~> 3.0.1'
    end
    复制代码

    4.打开终端 重新引入一下第三方框架 (可以看到,引入过AFNetworking/SwiftyJSON不会重新安装,只会安装新加进来的Toast-Swift):

    复制代码
    JiMideMacBook-Pro:~ jimi$ cd /Users/jimi/Documents/iOS/Demo/LoginDemo
    JiMideMacBook-Pro:LoginDemo jimi$ pod install
    Analyzing dependencies
    Downloading dependencies
    Using AFNetworking (3.2.1)
    Using SwiftyJSON (4.1.0)
    Installing Toast-Swift (3.0.1)
    Generating Pods project
    Integrating client project
    Sending stats
    Pod installation complete! There are 3 dependencies from the Podfile and 3 total pods installed.
    复制代码

    5.在工程里引入,并调用,我们用最简单的方式(复杂的方式,还有菊花转和图片的Toast):

    import Toast_Swift

    6.引入以后,照旧要按一下,command+b,重新编译一下工程。下面是完整的登录Controller:

    复制代码
    import UIKit
    import SwiftyJSON
    import Toast_Swift
    
    class ViewController: UIViewController {
        
        
        @IBOutlet weak var et_vip_code: UITextField! // VIP号码
        @IBOutlet weak var bt_login: UIButton! // 登录按钮
    
        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view, typically from a nib.
        }
    
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }
        
        // 登录按钮 的 点击事件
        @IBAction func bt_login_clicked(_ sender: Any) {
            //创建请求参数
            // let params = ["VIP_keyworld":"595466","password":"123456"] // 多个参数写法
            // let params = ["VIP_keyworld":"595466"]
            
            let vipCode = et_vip_code.text!
            let params = ["xxx":vipCode] // 请求参数
            let loginUrl = "http://www.xxx.com/xxx/xxxx.asp" // 请求地址
            
            // 使用 AFNetworking 发送POST请求
            NetworkTools.shareInstance.request(methodType: .POST, urlString: loginUrl, parameters: params as [String : AnyObject]) { (result : AnyObject?, error : Error?) in
                
                if error != nil  {
                    print(error!)
                    return
                }
                print(result!)
                
                
                // 使用 SwiftyJSON 解析json -- 这里解析的是 jsonObject
                // 如果要解析 jsonArray, SwiftyJSON 更加丝滑, 参考 http://www.hangge.com/blog/cache/detail_968.html
                let json = JSON(result as Any)
                if let vip_id = json["id"].string {
                    print("id是:",vip_id)
                    self.view.makeToast("id = " + vip_id) // Toast 提示
                    if vip_id == "0" {
                        self.view.makeToast("请输入正确的VIP号码") // Toast 提示
                    }else{
                        self.view.makeToast("登录成功") // Toast 提示
                    }
                }
            }
        }
        
        // 输入框内容 改变 监听
        @IBAction func et_vip_code_changed(_ sender: Any) {
            let vipCode = et_vip_code.text!
            if vipCode.count > 0 {
                bt_login.backgroundColor = #colorLiteral(red: 0.1921568627, green: 0.5411764706, blue: 1, alpha: 1) // 已经输入VIP号码 登录按钮背景色
            } else{
                bt_login.backgroundColor = #colorLiteral(red: 0.3137254902, green: 0.3921568627, blue: 0.5137254902, alpha: 1) // 没有输入VIP号码 登录按钮背景色
            }
        }
        
    }
    复制代码

    7.Toast-Swift的Github地址:

    https://github.com/scalessec/Toast-Swift

    8.下一篇,我们来实现从登录界面跳转到主界面。

    展开全文
  • iOS开发-登录界面开发(5)AFNetworking的网络请求-Swfit4.1_Xcode9.3.1 1.建立Tools文件夹: 2.新建一个Swift File,用于封装网络请求,名字比如“AFNetworkingManager”: import ...

    1.建立Tools文件夹:

    2.新建一个Swift File,用于封装网络请求,名字比如“AFNetworkingManager”:

    import Foundation
    import AFNetworking
    
    // 定义枚举类型
    enum HTTPRequestType : Int{
        case GET = 0
        case POST
    }
    
    class NetworkTools: AFHTTPSessionManager {
        // 设计单例 let是线程安全的
        static let shareInstance : NetworkTools = {
            let tools = NetworkTools()
            tools.responseSerializer.acceptableContentTypes?.insert("text/html")
            return tools
        }()
        
    }
    
    // 封装请求方法
    extension NetworkTools {
        func request(methodType : HTTPRequestType, urlString : String, parameters : [String : AnyObject], finished :@escaping (_ result : AnyObject?, _ error : Error?)-> ())  {
            // 1 成功回调
            let successCallBack = {(task :URLSessionDataTask, result : Any) in
                finished(result as AnyObject?, nil)
            }
            // 2 失败回调
            let failureCallBack = {(task : URLSessionDataTask?, error :Error) in
                finished(nil, error)
            }
            
            if methodType == .GET {
                // get请求
                
                get(urlString, parameters: parameters, progress: nil, success: successCallBack, failure: failureCallBack)
            }else {
                // post请求
                
                post(urlString, parameters: parameters, progress: nil, success: successCallBack, failure: failureCallBack)
                
            }
        }
    }

    3.“import AFNetworking”可能会报错,这个是Xcode的一个Bug,我们按command+N,重新编译一下项目就好了

    4.我们给登录按钮点击事件,增加网络请求和json解析:

    import UIKit
    import SwiftyJSON
    
    class ViewController: UIViewController {
        
        
        @IBOutlet weak var et_vip_code: UITextField! // VIP号码
        @IBOutlet weak var bt_login: UIButton! // 登录按钮
    
        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view, typically from a nib.
        }
    
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }
        
        // 登录按钮 的 点击事件
        @IBAction func bt_login_clicked(_ sender: Any) {
            //创建请求参数
            // let params = ["VIP_keyworld":"595466","password":"123456"] // 多个参数写法
            // let params = ["VIP_keyworld":"595466"]
            
            let vipCode = et_vip_code.text!
            let params = ["VIP_keyworld":vipCode] // 请求参数
            let loginUrl = "http://www.xxxxxx.com/login.asp" // 请求地址
            
            // 使用 AFNetworking 发送POST请求
            NetworkTools.shareInstance.request(methodType: .POST, urlString: loginUrl, parameters: params as [String : AnyObject]) { (result : AnyObject?, error : Error?) in
                
                if error != nil  {
                    print(error!)
                    return
                }
                print(result!)
                
                
                // 使用 SwiftyJSON 解析json -- 这里解析的是 jsonObject
                // 如果要解析 jsonArray, SwiftyJSON 更加丝滑, 参考 http://www.hangge.com/blog/cache/detail_968.html
                let json = JSON(result as Any)
                if let vip_id = json["id"].string {
                    print("id是:",vip_id)
                }
            }
        }
        
        // 输入框内容 改变 监听
        @IBAction func et_vip_code_changed(_ sender: Any) {
            let vipCode = et_vip_code.text!
            if vipCode.count > 0 {
                bt_login.backgroundColor = #colorLiteral(red: 0.1921568627, green: 0.5411764706, blue: 1, alpha: 1) // 已经输入VIP号码 登录按钮背景色
            } else{
                bt_login.backgroundColor = #colorLiteral(red: 0.3137254902, green: 0.3921568627, blue: 0.5137254902, alpha: 1) // 没有输入VIP号码 登录按钮背景色
            }
        }
        
    }

    5.至此,应该是结束了,但是会报错,可以理解为没有网络权限:

    NSLocalizedDescription=The resource could not be loaded because the App Transport Security policy requires the use of a secure connection
    翻译:因为应用程序传输安全策略需要使用安全连接,所以无法加载资源

    6.增加网络权限:

      6.1.点击项目,点击info,点击Custom iOS Target Properties,创建 App Transport Security Settings 的 Dictionary:

      

      6.2.在其里面 创建Allow Arbitrary Loads的Boolean 值为YES:

        

    7.看一下效果(忽略渣画质):

    8.好了,我们把登录界面的UI和网络请求,都实现了。

    posted on 2018-05-28 14:48 iwanghang 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/iwanghang/p/9100121.html

    展开全文
  • iOS开发-登录界面开发(4)AFNetworking的引入-Swfit4.1_Xcode9.3.1 1.AFNetworking是个啥?  网络请求开源框架, iOS和Mac OS都能用。 2.SwiftyJSON是个啥?  另一个开源框架,...

    1.AFNetworking是个啥?

      网络请求开源框架, iOS和Mac OS都能用。

    2.SwiftyJSON是个啥?

      另一个开源框架,处理JSON数据(解析数据、生成数据)。

    3.让我们来引入AFNetworking、SwiftyJSON:

      3.1.找到你项目的地址:(顺便介绍一个快捷键,option+command+c,复制文件或者文件夹的路径)

    /Users/jimi/Documents/iOS/Demo/Myy

      3.2.打开终端,输入,回车:

    cd /Users/jimi/Documents/iOS/Demo/Myy

      3.3.创建一个 Podfile:

    touch Podfile

      3.4.你可以选择使用命令行编辑,比如:“vim Podfile”回车,开始编辑,按“i”,进行插入,插入下面的语句,按Esc,按:,按wq+回车,进行保存退出。

        或者你可以,直接把下面的语句,复制到 Podfile 文件里:

    # 设置支持最低平台
    platform :ios, '8.0'
    target 'Myy' do
    # 如果是Swift项目,需添加"use_frameworks!"
    use_frameworks!
    # 如果要使用固定版本 可以像下面这么写
    # pod 'AFNetworking', '~> 3.2.1'
    pod "AFNetworking"
    pod "SwiftyJSON"
    end

      3.5.开始下载引入:

    pod install

    4.可以打开引入第三方框架的工程了,打开这个文件,就可以了:

    /Users/jimi/Documents/iOS/Demo/Myy/Myy.xcworkspace

    5.这样,我们就同时引入2个开源框架了。引入的是最新版本,如果你特殊需求,可以像注释写得一样,引入指定版本。

    6.下一篇,我们实现网络请求。

    7.推荐相关博文:https://www.jianshu.com/p/9e4e36ba8574

     

    posted on 2018-05-28 13:47 iwanghang 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/iwanghang/p/9099737.html

    展开全文
  •    需要iOS视频资料可以加我微信:...要学习IOS开发,当然是先学习Swift语言,特别是小白,你连基本的代码都看不懂,后面深入学习就很被动了。 一、开发环境配置  1. 开发IOS首先必须有一台mac(苹果笔记本)...

        

     

        需要iOS视频资料可以加我微信: 1914532832  验证信息请注明:IOS开发

        很多新人对IOS开发很迷茫,不知道从何下手?看完本系列,你将会觉得IOS入门其实很简单。要学习IOS开发,当然是先学习Swift语言,特别是小白,你连基本的代码都看不懂,后面深入学习就很被动了。

    一、开发环境配置

        1.  开发IOS首先必须有一台mac(苹果笔记本),使用Window系统的电脑还是回家吧。

        2. 苹果应用软件的开发必须使用Xcode软件,包括我们IOS开发(手机应用软件)。Xcode的安装非常简单,使用"App Store"下载然后安装,不懂的自己查询。目前Xcode版本是9.4,对应的Swift版本是4.1,IOS的SDK是11.4。Xcode自带Swift和ISO的SDK,不需要另行安装配置。

        做IOS开发目前可使用Object C和Swift两种语言,首选的语言当然是Swift语言,这是趋势而且容易上手。

    二、创建项目

        本章只是为了让大家更快更好学习Swift语言,所以只需要建一个最简单的Playground工程,其好处是可以快速的编译并查看结果。

        1. 首先打开Xcode应用,然后点击图中的红框

     

        2. 确认左上角是选择了"iOS"和"Blank",接着点击右下角的“Next",进入下一界面。

        3. 在"Save As:" 后面输入项目的名称,下面可以选择项目要保存的地方,选完后点击右下角的“Create”按钮,项目就创建成功了。

    弹出如下界面:

     

        有的人说,我的怎么没有左右或者下面的那几块,可以通过点击右上角那几个按钮来调出来:

        简单介绍一下面板各个块的功能:

        1.左侧那块显示的是工程的目录结构;

        2.中间上面那个大块就是我们的“编码区”,这个地方就是我们要输入Swift代码的地方;

        3.中间下面那块是结果“输出区”,我们下面主要使用的就是中间这两块;

        4.右侧这块暂时没有用到,不做解释。

     

        开发界面中,中间靠左下的那个蓝色按钮是编译按钮,写完代码后直接点击这个按钮进行编译:

        又有人说了,我的块为什么都是白色的,而你中间的是黑色,这是设置了主题配色(目的是长期编程不伤眼睛),你可以自行查询设置,不过Xcode只能设置编码区的颜色,也是醉了。

    三、编写代码

        其实创建项目后,中间的“编码区”已经有两行代码:

        第一行 import 这个关键词是用于导入系统或者第三方库,有各种功能不同功能的库,例如UIKit可以帮我们处理视图。

        第二行是定义一个字符串变量,这个后面再说。

        下面代码都是写在“编码区”,最好每一行都要亲手用键盘敲一遍,这是熟悉一种编程语言很有效的方式。

    1.输出到“结果区”

        为了直观,我们先用一行代码在“结果区”输出结果,在“编码区”第三行敲如下代码

        print(str)

        然后点击蓝色三角形的“编译”按钮。可以看到“输出区”,打印出了一行字。后面都可以通过这种方式,将结果输出到“输出区”

    2.常量和变量

        Swift用var关键词来定义变量,用let定义常量

    var a=5
    let b=6
    print(a+b)

        "输出区"结果是:11

    3.数据类型

    let c:Int=70//整型
    var d:Float=70//单精度浮点型
    let e:Double=70//双精度浮点型
    var tt="this is pen"//字符串类型

    4.字符串

    let myString="result is "
    let myInt:Int=94
    let myString1=myString+String(myInt)
    let myString2="result is \(myInt)"
    print(myString1)
    print(myString2)

        myString1和myString2输出结果都是:result is 94

        myString1中用String(myInt)将Int型数据转换为字符串类型,而myString2中使用\()来将数值类型转换为字符串类型

    5.数组类型

    var array=["one","two","three","four"]
    var getTwo=array[1];
    print(getTwo)

        输入结果为:two

    6.数据字典

    var dictionary=["oneName":"I am one value","twoName":"I am two value"]
    var getTwoValue=dictionary["twoName"]
    print(getTwoValue)

        输出结果是:Optional("I am two value")

    7.枚举

    enum Week{
        case 星期一
        case 星期二
        case 星期三
        case 星期四
        case 星期五
        case 星期六
        case 星期日
    }
    var week:Week
    week=Week.星期一
    print(week)

        输出结果:星期一

     

    关于Swift语言知识还很多很多,这里只是个简单的引导入门。关于Swift给两点建议:

        1.  建议开始学习Swift语言时,碰到的代码都要亲手用键盘敲一遍。

        2. 在学完Swift一些常用的知识后,就要开始在实践中应用,实践中肯定还会碰到Swift问题,这时再回头去学习Swift相关内容。

    更多Swift语言资料可以参看下面的链接,建议收藏,以后碰到问题也可以查询:

    https://www.cnswift.org/the-basics

    本系列后续会不断更新,有兴趣的同学,可以点击下一节:

    IOS开发入门之二——第一个App

    需要iOS视频资料可以加我微信: 1914532832  验证信息请注明:IOS开发

     

     

     

     

     

    展开全文
  •  登录成功,我们一般跳转到主界面,跳转时,把用户id等数据 传递给主视图控制器,如图:2.拖拽一个View控件,来建立一个主视图,并拖拽一个Text控件,准备来显示传递过来的值3.创建一个主视图控制器:4.给主视图...
  • Swift开发指南》

    2019-01-08 08:07:09
    Swift开发指南》 基本信息 作者: 关东升 赵志荣  丛书名: 图灵原创 出版社:人民邮电出版社 ISBN:9787115366245 上架时间:2014-8-5 出版日期:2014 年9月 开本:16开 页码:1 版次:1-1 所属分类...
  • Swift游戏开发实战教程(大学霸内部资料)
  • Swift编程语言,由于其快速、动态、优雅的优势,必将取代Objective-C成为iOS开发主流编程语言,相信在不久,Swift开发工程师很快将被各公司疯抢,想必待遇也是非常诱人的,所以从现在开始学习,快人一步,提升自己的...
  • 和之前一样,这个模块也是对于本地我们开发好的代码,需要到一起开发iOS的同事需要拉代码,调试的时候。这种静态包的方式就会好很多。不用在他的电脑上也搭建flutter环境,以及创建flutter项目的拉取调试等复杂的...
  • Swift游戏开发实战教程(大学霸内部资料) 试读下载地址:http://pan.baidu.com/s/1sj7DvQH 介绍:本教程是国内第一本Swift游戏开发专向资料。 本教程具体解说记忆配对、太空侵略者、Simon记忆、...
  • 在使用swift语言进行iOS应用程序开发的过程中,我们会经常接触到“Delegate”这个概念。为了更好地理解这个概念,我们以文本输入框组件UITextField为例。
  • Swift 开源项目汇总

    2019-09-16 16:07:05
    Swift 开源项目汇总
  • 课程目录 01项目搭建 【录播】101-项目搭建(22分钟)  【录播】102-自定义tabBar(30分钟)  【录播】103-补充内容(9分钟) ...【录播】203-Swift的核心(12分钟) 【录播】204-添加网络请求以及创建模型(27...
1 2 3 4 5 ... 20
收藏数 738
精华内容 295