文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

5 分钟,带你快速撸一个 iOS App

2024-12-03 03:32

关注

1. 前言

大家好,我是安果!

使用 Python 写完爬虫后,有时候我们需要在手机上实时对爬虫进行调度,或实时展示爬虫的结果

面对这种场景,我们可以将爬虫逻辑写成 API 部署到服务器,然后在移动端编写 App,通过界面元素控件直接调用接口即可

本篇文章,将和大家聊聊如何快速编写一款 iOS 原生 App

2. 准备

要实现原生 iOS 应用,我们需要在 Mac 上使用 Xcode 编写并进行编译

首先,设置 Xcode 的开发者账号

打开 Xcode,左上角选择 Xcode - Preferences - Accounts,点击左下角的 + 号,添加一个开发者账号

然后,使用 Xcode 创建一个项目

这里模版选择 iOS App,输入项目名称,编程语言选择「 Swift 」,点击下一步完成项目的创建

PS:Swift 相比 OC,语法更加简洁明了

最后,为新创建的项目指定 Sign 签名

这部分如果有疑惑,可以点击文末的阅读原文去了解

3. 实战

实战部分,我们以一个简单的登陆页面来进行讲解

3-1 安装依赖库

由于项目使用 Swift 开发,这里推荐使用 SPM( Swift Package Manager )来安装依赖

比如,网络请求库「 Alamofire 」

项目地址:https://github.com/Alamofire/Alamofire

安装方式:File - Swift Packages - Add Package Dependency - 输入项目地址( Github / Gitee )- 选择安装版本

3-2 页面布局

打开项目根目录下的「 ContentView.swift 」文件,在 body 下编写具体的视图

首先,使用 VStack 定义一个垂直的布局盒子,并定义子控件水平居中展示

PS:SwiftUI 常见的 3 种布局方式为 VStack、HStack、ZStack,它们分别代表垂直布局、水平布局、深度布局

  1. import SwiftUI 
  2. import Combine 
  3.  
  4. struct ContentView: View { 
  5.      
  6.     ... 
  7.      
  8.     //构建页面View 
  9.     var body: some View { 
  10.         VStack(alignment: HorizontalAlignment.center){ 
  11.            ... 
  12.         } 
  13.     }  

然后,子元素依次添加一张本地图片、两个输入框、一个选择框、一个按钮

其中,

  1. import SwiftUI 
  2. import Combine 
  3.  
  4. struct ContentView: View { 
  5.      
  6.     //构建页面View 
  7.     var body: some View { 
  8.         VStack(alignment: HorizontalAlignment.center){ 
  9.             Image("WechatIMG5"
  10.              
  11.             TextField("用户名", text: $username).textFieldStyle(RoundedBorderTextFieldStyle()) 
  12.                 .keyboardType(.numberPad) 
  13.                 .padding() 
  14.              
  15.             TextField("密码", text: $pwd).textFieldStyle(RoundedBorderTextFieldStyle()) 
  16.                 .keyboardType(.numberPad) 
  17.                 .padding() 
  18.              
  19.             //是否为测试 
  20.             Toggle(isOn: $isFavorited) { 
  21.                 Text("测试环境"
  22.                 }.padding(.leading, 0.0).frame(width: 140, height: 40) 
  23.  
  24.             Button(action: { 
  25.                 //具体的操作      
  1.     }    
  2.     struct ContentView_Previews: PreviewProvider { 
  3.         static var previews: some View { 
  4.             ContentView() 
  5.         } 
  6.     }    
  7.      

最后,定义变量和控件数据进行双向绑定

  1. struct ContentView: View { 
  2.      
  3.     @State  var username:String = "用户名" 
  4.     @State  var pwd:String = "密码" 
  5.     @State  var result:String = "结果" 
  6.     @State  var isFavorited:Bool = false 
  7.          

3-3 网络请求及结果展示

为 Button 控件设置点击事件,使用 Alamofire 进行网络请求,最后将结果展示写入到结果控件绑定到数据中去即可

  1. Button(action: { 
  2.                 //具体的操作 
  3.                 print("start"
  4.                  
  5.                 var url = "" 
  6.                  
  7.                 if(self.isFavorited){ 
  8.                    url = "...?username=" + self.username + "&password=" + self.pwd 
  9.                 }else
  10.                    url = "...?username=" + self.username + "&password=" + self.pwd 
  11.                 } 
  12.                  
  13.                 print("请求地址:"+url) 
  14.                  
  15.                 AF.request(url).responseJSON { response in 
  16.                     switch response.result { 
  17.                     case .success(let json): 
  18.                         //转为Dictionary 
  19.                         let post_paramsValue = json as! DictionaryAny
  20.                          
  21.                         //__NSCFString 
  22.                         let msg = post_paramsValue["msg"]! 
  23.                         //转为String 
  24.                         let msg_pro = msg as! String 
  25.                          
  26.                         self.result = msg_pro 
  27.                          
  28.                         break 
  29.                     case .failure(let error): 
  30.                         print("error:\(error)"
  31.                         self.result = "网络异常,请稍后再试!" 
  32.                         break 
  33.                     } 
  34.                 } 
  35.                  
  36.             }) { 
  37.                 Text("一键执行"
  38.                     .foregroundColor(Color.white) 
  39.                     .padding(10) 
  40.                     .background(Color.gray) 
  41.                     .cornerRadius(6) 
  42.                     .padding(10) 
  43.                     .frame(alignment: .center) 
  44.             } 
  45.              
  46.             TextField("结果区域", text: $result) 
  47.                 .padding() 
  48.         } 

4. 最后

 

文章通过一个简单的例子描述了开发一个 iOS 原生应用的详细步骤;实际应用中,可以结合具体的场景去定制开发不同的功能模块

 

来源: AirPython内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯