★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/10300938.html
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
本文将演示Cocopods的安装和开源类库对JSON的解析。
首先打开terminal(终端),并在terminal输入安装语句:
sudo gem install cocoa pods
按下【Enter】键。
Password:
在密码提示符的右侧,输入当前账户的密码。
插件安装之后,可以通过输入关键词,查找需要安装的第三方类库。
pod search AFNetworking
terminal(终端)列出了所有可以安装的相关类库,只需要复制Pod语句即可。
现在来查看已经安装的Pod的版本。
pod --version
如果需要执行某个Pod文件,
使用cd命令切换切换至配置文件所在的文件夹,
该文件夹下拥有一个已经设置好的Pod配置文件,
现在输入安装语句,安装配置文件中的第三方类库。
pod install --no-repo-update
安装完成之后,最小化terminal(终端)。
首先确保在项目中已经安装了所需的第三方库。
点击【Podfile】,查看安装配置文件。
1 platform :ios, '12.0' 2 use_frameworks! 3 4 target ‘DemoApp' do 5 pod 'SwiftyJSON' 6 end
根据配置文件中的相关配置,安装第三方库。
然后点击打开【DemoApp.xcworkspace】项目文件。
在项目导航区,打开视图控制器的代码文件【ViewController.swift】
1 import UIKit 2 //引入已经安装的第三方类库 3 import SwiftyJSON 4 5 class ViewController: UIViewController { 6 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 // Do any additional setup after loading the view, typically from a nib. 10 11 //获得项目中待解析文档的存储路径。 12 let path = Bundle.main.path(forResource: "menu", ofType: "json") 13 //加载指定路径的文档,并将结果保存在数据常量中。 14 if let jsonData = try? Data(contentsOf: URL(fileURLWithPath: path!)) 15 { 16 //使用加载的数据,生成一个JSON对象。 17 let json = JSON(data: jsonData) 18 //通过对象的描述方法,在控制台输出该对象包含的内容。 19 print(json.description) 20 21 //获得并输出菜单键下的指定子键的值 22 print(json["menu"]["id"]) 23 //获得并输出菜单键下的指定子键的值 24 print(json["menu"]["value"]) 25 //在菜单键的内部,包含一个由数组组成的子键序列, 26 //这里获得并输出数组中的第一个元素。 27 print(json["menu"]["menuitem"][0]) 28 //输出数组中的第一个元素的名称子键的值。 29 print(json["menu"]["menuitem"][0]["name"]) 30 //输出数组中的第一个元素的点击事件子键的值。 31 print(json["menu"]["menuitem"][0]["onclick"]) 32 print("--------------------------------------") 33 34 //获得子键序列,并存储在一个数组中。 35 if let arr = json["menu"]["menuitem"].array 36 { 37 //使用循环语句,对存储在数组中的元素进行遍历 38 for subItem in arr 39 { 40 //依次输出名称和点击事件两个子键所对应的值。 41 print(subItem["name"]) 42 print(subItem["onclick"]) 43 } 44 } 45 //输出一个分隔线日志。 46 print("--------------------------------------") 47 48 //使用第三方类库,快速创建自定义的JSON对象 49 var jsonInt: JSON = [1,2,3] 50 //通过下标可以快速更改元素的值。 51 jsonInt[0] = 100 52 jsonInt[5] = 200 53 //在控制台输出JSON对象的详细信息 54 print("jsonInt:(jsonInt)") 55 56 //JSON对象可以包含多种类型的键值对。 57 var jsonData: JSON = ["name": "Jack", "age": 25, "list": ["a", "b", "c", ["what": "this"]]] 58 //通过下标可以快速定位和修改某个元素。 59 jsonData["list"][3]["what"] = "that" 60 print("jsonData:(jsonData)") 61 } 62 } 63 64 override func didReceiveMemoryWarning() { 65 super.didReceiveMemoryWarning() 66 // Dispose of any resources that can be recreated. 67 } 68 }