【iOS】—— swift基础语法及一些第三方库使用

这篇具有很好参考价值的文章主要介绍了【iOS】—— swift基础语法及一些第三方库使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

swift基础语法

常量(let关键字)

只能赋值一次
它的值不要求在编译时期确定,但使用之前必须赋值一次

变量(var关键字)

可以被赋值多次
跟常量一样,在使用之前必须给他赋值,否则编译器会报错

var str:String
str = "hello world";
print(str)
str += " 11";
print(str)

var a, b, c:Int
a = 1
print(a)

var bool1:Bool = true
print(bool1)

元组

var pen:(name:String, price:Int) = ("英雄", 15);
pen.name = "毕加索"

var car:(String, Int) = ("奔驰", 9999)
car.0 = "宝马"
var (theName, thePrice) = car
print(theName, thePrice)

typealias(类似之前的typedef)

typealias Price = Int
var penPrice:Price = 100

if-let

var product:Int? = 100
if let weight = product, (weight > 30) {
    print("666")
}

String类基本用法

//String
var c1 = "hello"
var c2 = "world"
var c3 = c1 + " " + c2

var d1 = "hello\(123)"
var d2 = "hello\(c2)"
var d3 = "hello\(1+2)"
var d4 = "hello\(1) \(3)"
print(d1, d2, d3, d4)

var string2 = "My name is Jaki"
string2 = string2.uppercased()   //全部转化为大写
print(string2)
string2 = string2.lowercased()   //全部转化为小写
print(string2)
print(string2.hasPrefix("my"))
print(string2.hasSuffix("jaki"))

MemoryLayout(类比于c中的sizeof)

//MemoryLayout(类比于c中的sizeof)
print(MemoryLayout<String>.size)

数组

//数组
var array1:[Int]
var array2:Array<Int>

//创建有10个String类型元素的数组,并且每个元素都为字符串Hello
var array3 = [String](repeating: "hello", count: 10)
print(array3)
//同理的Int
var array4 = Array (repeating: 1, count: 10);
print(array4)
print(array4.contains(1))   //判断数组中是否包含某个元素
//数组排序
var arraySort = [1, 3, 5, 6, 7]
arraySort = arraySort.sorted(by: >)   //从大到小
arraySort = arraySort.sorted(by: <)   //从小到大
print(arraySort.max()!)   //获取数组中的最大值
print(arraySort.min()!)   //获取数组中的最小值

集合

//集合
var set1:Set<Int> = [1, 2, 3, 4]
var set2 = Set(arrayLiteral: 1, 2, 3, 4)
print(set1.isEmpty)
print(set1.contains(1))   //是否包含1
set1.insert(5)
set1.remove(1)
set1.removeFirst()
//set1.remove(at: set1.firstIndex(of: 2)!)   //移除集合中某个位置的元素
for item in set1.sorted(by: >) {
    print(item)   //从大到小排序再遍历集合
}

字典

//字典
var dic1:[Int: String]
var dic2:Dictionary<Int, String>
var dic3 = [1: "one"]
dic1 = [1:"1", 2:"2", 3:"3"]
dic2 = Dictionary(dictionaryLiteral: (1, "1"), (2, "2"), (3, "3"))

循环打印

//循环打印
for i in 1...7 {
    print(i, terminator: " ")
}

函数

//函数
func hanshu(param:Int) -> Int {
    return param + 1;
}

重载

func addFunc(param1:Int, param2:Int)->Int {
    return param1 + param2
}
func addFunc(param1:Double, param2:Double)->Double {
    return param1 + param2
}
func addFunc(param1:String, param2:String)->String {
    return param1 + param2
}
print(addFunc(param1: 5, param2: 10));
print(addFunc(param1: 1.52, param2: 3.61))
print(addFunc(param1: "123", param2: "abc"))

类和继承

//类和继承(final阻止继承和重写)
var car1 = Car(tyreCount: 4)
car1.drive()
var boat1 = Boat(floor: 50)
boat1.drive()

set、get方法

//set、get方法
let teacher = Teacher1()
teacher.memberAge = -1
teacher.memberName = ""
print(teacher.description)

SnapKit第三方库用法(Masonry)

这个第三方库和Masonry的作用和用法都很相似

            leftLabel.snp.makeConstraints { make in
                make.left.equalTo(self).offset(30)
                make.top.equalTo(self).offset(Int(SIZE_HEIGHT) / 5 + i * (Int(SIZE_WIDTH) / 6) + Int(SIZE_WIDTH) / 10)
                make.width.equalTo(SIZE_WIDTH / 10)
                make.height.equalTo(SIZE_WIDTH / 10)
            }

其中这块我们看到和oc不同的是Int(SIZE_HEIGHT)这块有个强制类型转化,这块原因是因为Swift是一个非常安全的语言,所以类型必须是相同的SIZE_WIDTH是一个浮点型常量,i是一个Int型变量,所以类型不同不能一起计算。

有了oc的基础,关于swift的学习比较容易,可以找一些项目练练手更好入手。

Codable(JSONModel)

这个库是官方的,不用导直接能用,用法和JSONModel类似,有一些小区别,但是感觉更好用一下:

    struct DailyNews: Codable {
        let date: String
        let stories: [Story]
        let topStories: [TopStory]

        enum CodingKeys: String, CodingKey {
            case date, stories
            case topStories = "top_stories"
        }
    }

    struct Story: Codable {
        let imageHue: String
        let title: String
        let url: String
        let hint: String
        let gaPrefix: String
        let images: [String]
        let type: Int
        let id: Int

        enum CodingKeys: String, CodingKey {
            case imageHue = "image_hue"
            case title, url, hint
            case gaPrefix = "ga_prefix"
            case images, type, id
        }
    }

    struct TopStory: Codable {
        let imageHue: String
        let hint: String
        let url: String
        let image: String
        let title: String
        let gaPrefix: String
        let type: Int
        let id: Int

        enum CodingKeys: String, CodingKey {
           case imageHue = "image_hue"
           case hint, url, image, title
           case gaPrefix = "ga_prefix"
           case type, id
       }
    }
    func netWorkWithData2(){
        if let urlString = URL(string: "https://news-at.zhihu.com/api/4/news/latest") {
            let request = URLRequest(url: urlString)
            URLSession.shared.dataTask(with: request) { data, response, error in
                        
                guard let httpResponse = response as? HTTPURLResponse, (200...299).contains(httpResponse.statusCode) else {
                    print("Invalid response")
                    return
                }
                            
                do {
                    let decoder = JSONDecoder()
                    //decoder.keyDecodingStrategy = .convertFromSnakeCase // 有需要则配置这个属性
                    let newsVersion = try decoder.decode(DailyNews.self, from: data!)
                    print(newsVersion.stories[0].title)
                } catch {
                    print(error.localizedDescription)
                }
                
            }.resume()
        }
    }

Alamofire (AFNetworking)

Alamofire.request("https://news-at.zhihu.com/api/4/news/latest").responseJSON { response in
            switch response.result {
                case .success(let value):
                    do {
                        let jsonData = try JSONSerialization.data(withJSONObject: value, options: [])
                        let decoder = JSONDecoder()
                        //decoder.keyDecodingStrategy = .convertFromSnakeCase
                        let latestNews = try decoder.decode(DailyNews.self, from: jsonData)
                        print(latestNews.stories[0].title)
                        // 解析成功,可以使用 latestNews 对象进行后续操作
                    } catch {
                        print(error)
                        // 解析错误,处理异常情况
                    }
                case .failure(let error):
                    // 请求失败
                    print(error)
                }
        }

用法和AFNetworking也基本相同,中间部分是将请求到的数据用Codable解析。文章来源地址https://www.toymoban.com/news/detail-481267.html

到了这里,关于【iOS】—— swift基础语法及一些第三方库使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 本仓库主要用来收集一些 Android 开发中常用的第三方 UI 库及其简单 Demo

    | 第三方库 | 介绍 | Demo | 使用说明 | | — | — | — | — | | CircleImageView | 显示圆形图片 | CircleImageViewDemo | Android UI Libs 之 CircleImageView.md | | android-gif-drawable | 显示 gif 图片 | android-gif-drawabledemo | Android UI Libs 之 android-gif-drawable.md | | AndroidSwipeLayout | 滑动布局,可以实现侧滑菜单与侧

    2024年04月15日
    浏览(50)
  • TrollStore巨魔商店永久安装任意第三方软件,支持iOS14.0~15.4.1

    TrollStore 简单的说就相当于一个永久的免费证书,它可以给你的iPhone和iPad安装任何你想要安装的App软件,而且不需要越狱,不用担心证书签名过期的问题,不需要个人签名和企业签名。 支持的设备型号和iOS版本: 支持 iOS14.0 –15.4.1,iOS 15.5 b1– iOS15.5 b4,iOS15.6 b1–iOS15.6 b5 支

    2024年02月02日
    浏览(301)
  • Python基础 | Anaconda环境下第三方库的安装

    微信公众号推文:https://mp.weixin.qq.com/s/etFEXm6-ujK3Sg2B7gzqMg Python的标准库是随着Pyhon安装的时候默认自带的库。(类比智能手机的自带相机) Python的第三方库,需要自行安装。(类比智能手机的各种App) Python社区提供了大量的第三方库。它们无所不能,覆盖科学计算、Web开发、

    2024年02月03日
    浏览(64)
  • Python第三方库安装——使用vscode、pycharm安装Python第三方库

    在这里介绍vscode、Pycharm安装python第三方库的方法。 操作系统:windows10 专业版 环境如下: Pycharm Comunity 2022.3 Visual Studio Code 2019 Python 3.8 pip:23.0.1 pycharm是一款很强大的、专用于写python的ide。 小白式安装第三方库往往能给初学者一种 “高级感” ,而对于使用惯了Linux的人而言

    2024年02月03日
    浏览(78)
  • HarmonyOS基础(七)- 详细剖析鸿蒙引入第三方库案例篇(1)

    大家好!我是黑臂麒麟(起名原因:一个出生全右臂自带纹身的高质量程序员😏),也是一位6+(约2个半坤年)的前端; 学习如像练武功一样,理论和实践要相结合,学一门只是也是一样; 这里会用两周的时间把所学的常用ArkUI基础的常用组件输出在网; 如需深究可前往高

    2024年04月23日
    浏览(33)
  • Vue第三方组件使用

    1、父组件与孩子组件传值 在孩子组件中定义props属性,里面定义好用于接收父亲数据的变量。 孩子组件是Movie Movie.vue。注意看在Movie组件里面有props对象中的title和rating属性用于父亲使用。 在父亲组件中使用孩子组件,使用时传入参数。 比如我在App.vue里面使用孩子组件时如

    2024年04月10日
    浏览(92)
  • 鸿蒙使用第三方SO库

    使用第三方SO库以导入OpenCV和MNN的SO库为例 1、将MNN和Opencv的so文件(包括.407文件),放入模块下libs目录对应的版本(arm64-v8a和armeabi-v7a) 2、配置模块目录下的build-profile.json5的buildOption字段,增加abiFilters字段: 3、在CMakeLists.txt所在目录,创建\\\"thirdPart”目录,然后将MNN和opencv的头文件

    2024年01月19日
    浏览(37)
  • 微信小程序 - 使用第三方字体

    在微信小程序中,我们可以通过引入第三方字体来实现更加个性化和独特的文字效果。本文将详细介绍如何引入并使用第三方字体。 步骤一:选择字体文件 首先,我们需要选择一个适合的第三方字体文件。可以在网络上搜索并下载免费的字体文件,也可以购买商业字体。确

    2024年02月03日
    浏览(70)
  • 微信小程序使用第三方插件

    这里是使用npm方式安装第三方插件: 1,首先新建一个微信小程序项目并找到该项目的文件地址, 如下图: 该项目中我以安装 weui插件为例进行演示。在上图中的目录中打开PowerShell窗口,先要进行npm 初始化,输入npm help init  ,默认回车下一步下一步就ok; 2,输入命令:npm in

    2024年02月08日
    浏览(69)
  • layui第三方组件cron的使用

    1. 首先上代码 下载资源: 1. cron生成组件(开源) 正常来说你只要下载 开源的cron组件,再下载layui,把我上面的html保存到layui文件夹同级目录,浏览器打开这个html,点击输入框的位置就可以正常使用,为避免无法使用,本文章也有嵌入资源可直接下载

    2024年02月12日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包