【note】Swift初见笔记

 

Swift 3: let sortedNumbers = numbers.sort { $0 > $1 } print(sortedNumbers) 结果显示为()

会发现输出结果为( )
如果改成

会出现报错:’sort’ has been renamed to ‘sorted(by:)’

所以知道这段代码应该改为:

这样才能正确输出结果~

【iOS】使用SQLite3的时候Swift3.、XCode8报错:Unsupported architecture – ‘arm/arch.h’file not found – Could not build module ‘Darwin’ – Could not build module ‘sqlite3’ – Failed to import bridging header ‘…..’

如果出现了找不到模块的错误,并且有如下报错:

  • Unsupported architecture
  • ‘arm/arch.h’file not found
  • Could not build module ‘Darwin’
  • Could not build module ‘sqlite3’
  • Failed to import bridging header ‘…..’

snip20161202_80

snip20161202_82

解决方法:在自己编写的SQLiteManager文件里面不需要写import sqlite3这句话。。直接使用SQLite语句就行了

【iOS10】使用XCode8、Swift3. 操作SQLite3数据库的步骤(包括配置环境和SQLite语句)

一、配置使用SQLite时的Swift框架工程环境

步骤如下:

1、点击项目名称 – Linked Frameworks and Libraries – “+” – 搜索“libsqlite3.dylib” – 然后点击Add

snip20161202_59

snip20161202_62

【访问SQLite数据库需要使用SQLite官方提供的C语言风格的API,所以需要添加桥接文件】

2、右击项目名称 – New File… – Header File – 命名为“SQLite-Bridge.h”,并在“SQLite-Bridge.h”这个头文件中加一行代码#import "sqlite.h"

snip20161202_63

3、点击项目名称 – Build Settings – 点击All – 点击Combined – 搜索“bridging” – 单击“Objective-C Bridging Header” – 双击后面后弹出添加文件名,把刚刚创建的头文件名称写进去- 然后回车

snip20161202_72

这时候配置工作就算完成了,就可以在项目里面写或者导入数据库操作方面(比如创建数据库)的代码文件了~

  • 小提示:如果出现了找不到模块的错误,并且有如下报错:
    • Unsupported architecture
    • ‘arm/arch.h’file not found
    • Could not build module ‘Darwin’
    • Could not build module ‘sqlite3’
    • Failed to import bridging header ‘…..’
  • snip20161202_80

在自己编写的SQLiteManager文件里面不需要写import sqlite3这句话。。直接使用SQLite语句就行了

 

二、通过一个demo展现数据库操作的功能的实现

制作一个demo,使用swift3、Xcode8、iOS10

该demo的功能如下:

共有两个页面,第一个页面(主页)是个tableview,用来展现查找得到的数据,第二个页面(添加页)是学号和姓名的添加文本框。通过在第二个页面的添加学生的学号和姓名,并且将修改后的数据重新加载在第一个tableview页面。tableview的页面支持delete某一条记录。

Demo的截图如下:

snip20161203_83 snip20161203_84

demo的源代码已上传至github:https://github.com/liuchuo/SQLite-Demo-With-Swift

三、demo的代码中的SQLManager.swift中的代码:

【iOS】Swift3 报错:Value of type ‘AppDelegate’ has no member ‘managedObjectContext’,UIApplication has no member ‘sharedApplication’

在Swift 3里面,需要通过viewContext访问managedObjectContext,且sharedApplication方法改为shared方法:

以前是这样写的:

【note】Swift之闭包表达式的几种简化缩写形式

完整型:

闭包表达式的几种简化缩写形式:

  • 自动类型判断:省略参数类型和返回值类型

  • 单表达式闭包可以省去return关键词(单表达式的意思是就是return语句只有一句话)——比较普遍

  • 使用参数缩略形式$0, $1…省略参数声明和in($0表示第一个参数,¥1表示第二个参数)——比较普遍

  • 将操作符函数自动推导为函数类型——用的不多

  • 尾随闭包:当闭包表达式为函数最后一个参数,可将其写在括号后(为了代码的干净整洁)——比较常见

  • 自动闭包:不接受任何参数,直接返回表达式的值。允许延迟计算。
    • 允许延迟计算的意思是本来filter是会立即计算的,这样可以延迟计算,到之后才去执行filter()