swift语言

Swift 最佳实践(未完待续)

筅森魡賤 提交于 2020-03-03 21:30:01
使用 Swift 进行软件开发的最佳实践. 本文档的 英文版在这里 ,感谢 Swift社区 (频道为 #bestpractices )为我们提供如此优质的文档。 前言 这个文档的产生得益于我在创作 Swift Graphics 时做的一系列的手记。本指南中的大部分建议也考量了是否可以为其它的观点和论点。当然,感觉其他的方法必须存在时除外。 这些最佳实践没有规定或推荐 Swift 是否应该在一个程序上以面向对象的或者函数式的方式来使用。 本文档更多的是关注 Swift 语言及其标准库。也就是说,以一个纯粹的 Swift 的角度提供可提供的关于在 Mac OS, iOS, WatchOS 和 TVOS 上如何使用 Swift 的具体建议。 同时也会提供一些如何在 Xcode 和 LLDB中有效利用 Swift 的提示和技巧。 这项工作正在进行中,非常欢迎大家通过 Pull Request 或 Issues 的方式来贡献内容。 你也可以在 Swift-Lang slack (位于 #bestpractices 频道) 上参与讨论。 贡献者注意事项 请确保所有的例程是可运行的 (这可能不适用于现有的例程)。这个 markdown 文件会转化成一个 Mac OS X 的 playground. 黄金法则 Apple 通常是对的。应紧随苹果所推荐的或他的 Demo 中所展示的方式

在Swift中使用JavaScript的方法和技巧

China☆狼群 提交于 2020-03-02 06:08:58
JSContext/JSValue JSContext即JavaScript代码的运行环境。一个Context就是一个JavaScript代码执行的环境,也叫作用域。当在浏览器中运行JavaScript代码时,JSContext就相当于一个窗口,能轻松执行创建变量、运算乃至定义函数等的JavaScript代码: //Objective-CJSContext *context = [[JSContext alloc] init];[context evaluateScript:@"var num = 5 + 5"];[context evaluateScript:@"var names = ['Grace', 'Ada', 'Margaret']"];[context evaluateScript:@"var triple = function(value) { return value * 3 }"];JSValue *tripleNum = [context evaluateScript:@"triple(num)"]; //Swiftlet context = JSContext()context.evaluateScript("var num = 5 + 5")context.evaluateScript("var names = ['Grace', 'Ada',

iOS -- 开源项目和库

為{幸葍}努か 提交于 2020-03-02 05:48:27
TimLiu-iOS 目录 UI 下拉刷新 模糊效果 AutoLayout 富文本 图表 表相关与Tabbar 隐藏与显示 HUD与Toast 对话框 其他UI 动画 侧滑与右滑返回手势 gif动画 其他动画 网络相关 网络连接 图像获取 网络聊天 网络测试 网页框架 WebView与WKWebView Model 通讯录 其他库 数据库 缓存处理 PDF 图像浏览及处理 摄像照相视频音频处理 响应式框架 消息相关 消息推送客户端 消息推送服务器端 通知相关 版本新API的Demo 代码安全与密码 测试及调试 动态更新 AppleWatch 完整项目 好的文章 VPN Xcode插件 美工资源 开发资源 开发资料 swift 他人开源总结 开发博客列表 ======== 具体内容 ============================= ======== UI 下拉刷新 EGOTableViewPullRefresh - 最早的下拉刷新控件。 SVPullToRefresh - 下拉刷新控件。 MJRefresh - 仅需一行代码就可以为UITableView或者CollectionView加上下拉刷新或者上拉刷新功能。可以自定义上下拉刷新的文字说明。具体使用看“使用方法”。 (国人写) XHRefreshControl - XHRefreshControl 是一款高扩展性

自己总结的iOS、mac开源项目及库

混江龙づ霸主 提交于 2020-03-02 05:04:10
======== 自己总结的iOS、mac开源项目及库。 github排名 [https://github.com/trending]( https://github.com/trending ),github搜索:[https://github.com/search]( https://github.com/search ) ### 目录 - [UI](#UI) - [下拉刷新](#下拉刷新) - [模糊效果](#模糊效果) - [AutoLayout](#AutoLayout) - [富文本](#富文本) - [图表](#图表) - [表相关](#表相关) - [隐藏与显示](#隐藏与显示) - [HUD与Toast](#HUD与Toast) - [对话框](#对话框) - [其他UI](#其他UI) - [动画](#动画) - [侧滑与右滑返回手势](#侧滑与右滑返回手势) - [gif动画](#gif动画) - [其他动画](#其他动画) - [网络相关](#网络相关) - [网络连接](#网络连接) - [网络测试](#网络测试) - [图像获取](#图像获取) - [网络聊天](#网络聊天) - [网络测试](#网络测试) - [WebView](#WebView) - [Model](#Model) - [其他](#其他) - [数据库](#数据库) - [缓存处理]

Swift 2.0 异常处理

混江龙づ霸主 提交于 2020-03-01 14:06:54
Swift 2.0 异常处理 WWDC 2015 宣布了新的 Swift 2.0 . 这次重大更新给 Swift 提供了新的异常处理方法。这篇文章会主要围绕这个方面进行讨论。 如何建造异常类型? 在 iOS 开发当中,我们会面对很多异常处理。在 Cocoa Touch 中我们使用 NSError 来进行异常处理。在新的 Swift 2.0 中,我们可以使用新的 ErrorType protocol。 在 Swift 中, enum 是最好的方法建立属于你自己的异常类型,你只要在你的 enum 中确认新的 ErrorType。 1 2 3 4 enum MyError: ErrorType { case NotExist case OutOfRange } 如何抛出异常 在抛出异常之前,我们需要在函数或方法的返回箭头 -> 前使用 throws 来标明将会抛出异常 1 2 3 func myMethodRetrunString() throws -> String // No return, we can just add throws in the end func myMethodRetrunNothing() throws 声明之后, 我们需要在函数或者方法里扔出异常,很简单使用throw 就可以了 1 2 3 4 5 6 7 8 9 func myMethod()

“致命错误:在解开可选值时意外发现nil”是什么意思?

佐手、 提交于 2020-02-28 07:50:30
我的Swift程序因 EXC_BAD_INSTRUCTION 和以下错误而崩溃。 这是什么意思,我该如何解决? 致命错误:解开Optional值时意外发现nil 该帖子旨在收集“意外发现的零”问题的答案,以使它们不会分散且很难找到。 随意添加您自己的答案或 编辑 现有的Wiki答案。 #1楼 这个答案是 社区维基 。 如果您认为它可以做得更好,请随时对其进行 编辑 ! 背景:什么是可选的? 在Swift中, Optional 是一个 泛型类型 ,可以包含一个值(任何类型),或者根本不包含任何值。 在许多其他编程语言中,通常使用特定的“前哨”值来指示 缺少值 。 例如,在Objective-C中, nil ( 空指针 )指示缺少对象。 但这在处理原始类型时变得更加棘手-应该使用 -1 来指示缺少整数,或者可能 INT_MIN 或其他某个整数吗? 如果选择任何特定值表示“无整数”,则意味着它不再可以视为 有效值 。 Swift是一种类型安全的语言,这意味着该语言可帮助您弄清代码可以使用的值的类型。 如果代码的一部分需要一个字符串,则类型安全性可防止您误将其传递给Int。 在Swift中, 任何类型 都可以设为optional 。 可选的值可以从原始类型,任何值 或 特殊值 nil 。 可选用 ? 定义 ? 类型的后缀: var anInt: Int = 42 var

2020 年编程语言盘点展望:Java 老兵不死,Kotlin 蓄势待发

ぃ、小莉子 提交于 2020-02-26 04:09:28
在进入新的十年之际,各行各业都在进行盘点与展望。 近期已陆续为大家整理了各大平台、社区针对技术领域作出的预测与盘点。 今天,继续为大家粗译(文末有原文地址,粗译仅供大家前期了解,建议阅读英文原文)O'Reilly 发布的编程语言发展展望 —— 《Where programming languages are headed in 2020》。 该盘点及分析由数位编程专家整理得出,包含了大量他们对于某些经典编程语言以及新兴编程语言的思考以及基于行业的分析。 Python 今年 Python 的比较大的新闻是,Python 之父吉多·范·罗苏姆(Guido van Rossum)正式退休,并将 Python 交给了 Python 指导委员会。到目前为止,这次权力转移并没有出现“阵痛”,正如《Python Crash Course》的作者 Eric Matthes 所认为的那样,这是很正常的,因为“ Guido 在很长一段时间里仍将保持自己在社区中的角色。” 此外,2020 年还将终止对 Python 2.7 的支持,这很可能导致坚持使用 Python 2.7 的人变得很难受。 但不管怎样,Python 仍然是数据科学的首选语言。 对于 Matthes 而言,Python 令人兴奋的一个方面是“来自一个社区的各种有趣且关键的项目已经诞生了,而社区已经如此有意识地建立了这么长时间。”

Swift4.0 基础语法部分【简述】

♀尐吖头ヾ 提交于 2020-02-25 13:01:25
一、swift特性 Swift 是一门开发 iOS, macOS, watchOS 和 tvOS 应用的新语言。 Swift 使用变量来进行存储并通过变量名来关联对应的值。(与C语言类似) Swift 中,如果要处理的值不需要改变,那使用常量可以让代码更加安全并且更清晰地表达意图。(能用常量就用常量) 二、常量与变量 使用let表示常量、var表示变量。(如果代码中有不需要改变的值,请使用 let 关键字将它声明为常量。只将需要改变的值声明为变量 var 关键字) 类型标注 var str1: String //(声明一个String类型,名为str1的变量)。一般来说在有赋初值的情况下不需要标注类型,swift会根据所赋的值推断出类型。 如需定义同一类型的多个变量可采用 : var zhao, qian, sun, li: String Swift中在进行基本运算时必须保证类型一致,否则会出错,相同类型之间才可以进行运算,Swift中没有隐式转换 三、字符串 var str = "Hello, playground" //for c in str.characters { // print(c) //} //字符串的拼接-格式化 let number_a = 132 let number_b = 100 let number_str = String (number_a +

Swift基础学习笔记

故事扮演 提交于 2020-02-25 13:01:06
1、在学基本语法之前,简单看一下与OC的不同   注释:OC #pragma marks 视图加载完成      Swift //MARK: 视图加载完成          //TOOO:设置背景颜色(Xcode 8.0 特有)        //FIXME:更改头像   创建一个视图View:       OC [[UIView alloc]initWithxxx:]; Swift UIView(xxx:) 类名() == alloc/init 等价   类方法:       OC [UIColor redColor];       Swift UIColor.red       2.0  UIColor.redColor   访问当前对象的属性,Swift可以不使用self.:    OC [self.view addSubview:v];       Swift  view.addSubview(v)       建议:都不用,在编译器提示的时候再添加,会对语境有更好的体会     原因:闭包(类似OC block),需要使用self.   没有";"      ";"目的分割语句的,在Swift中,默认不需要   枚举类型:       OC UIButtonTypeContactAdd Swift ‘.’contactAdd   监听方法     OC @selector

简单谈谈OC与Swift的异同

て烟熏妆下的殇ゞ 提交于 2020-02-25 12:59:48
Swift,苹果于2014年 WWDC (苹果开发者大会)发布的新开发语言,可与 Objective-C *共同运行于 Mac OS 和 iOS 平台,用于搭建基于苹果平台的应用程序。 目前已经更新到Swift2.0,即将发布3.0版本.听说有很大的变动呢.现在我们先来了解一下Swift与OC基础的小异同(不过如果要说它与OC有什么不同,感觉很不同啊~~~) 1.输出日志不同 2.常量变量定义不同,swift 类型的长短比OC更精确,swift是类型安全的语言,swift不允许隐式转换,但是可以显示转换 3.运算符:+ , - , * , / ,%, ++,--,OC和swiftch除了取模运算符,其他用法都一样,OC取模必须是整数,swift取模可以是小数,swift不可以连续赋值,但是OC可以 4.分支 @1 1)、if后的括号可以省略 2)、if后只能接bool值 3)、if后的大括号不能省略 @2 swift和OC的循环差不多,但是swift,for后括号可以省略 @3 1)while循环:while后的括号可以省略,只能是bool值作为条件语句 2)OC中有do-while,swift中do是用来捕获异常的,swift里用repeat-while 4.swift里有元组,OC木有 5.swift的nil和OC有些不一样,OC只有对象可以用nil,swift基础类型(整形