Swift教程
文章平均质量分 79
pengyuan_D
有朋自远方来,不亦乐乎
展开
-
加速 Pod install RealmSwift
首次(或者安装新版本)pod realm的时候,会下载sync-cocoa文件,这个文件有点大,所以pod install会很慢,且因身居404之内,所以易失败。手动下载可以加速pod install。// 这里以5.3.5版本为例pod 'RealmSwift', '5.3.5'1. 获取REALM_SYNC_VERSION把v5.3.5替换为你对应realm的版本号即可:https://github.com/realm/realm-cocoa/blob/v5.3.5/depen.原创 2020-09-16 15:32:03 · 804 阅读 · 0 评论 -
OC Swift混编-Swift.h File not found
今天碰到个神坑,本人项目是OC项目,最近开始使用Swift开始替代.但是,在替代的已开始就出现问题了:新建swift文件,然后提示创建bridging-Hearder文件,然后swift可以使用OC代码了.这些都没问题,接着坑就来了在OC中使用Swift代码是需要引入一个默认的"projectName-Swift.h"文件的,而我的项目名字就是图中的名字了.可是不管怎么弄,都是提示不存在查看了stackoverflow之后,也没发现好的解决办法,于是打算重新查看一遍设置在这里我看了这里原创 2020-09-07 13:59:07 · 1235 阅读 · 0 评论 -
swift闭包
import UIKit/*swift中的闭包和OC中的block非常类似 可以说几乎一样block1.预先准备好的一段可执行的代码2.可以当做参数传递3.在需要的时候执行block4.block中使用 self 需要注意循环引用 但是一定会引起循环引用?*/class ViewController: UIViewController { override f原创 2016-01-08 17:30:06 · 417 阅读 · 0 评论 -
Swift函数
import UIKitclass ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() //函数的调用 //默认的第一个参数名省略 let result = sum(10, b: 20)原创 2016-01-08 17:29:15 · 397 阅读 · 0 评论 -
Swift字典
import UIKit/*和数组一样 let: 表示不可变字典var: 表示可变字典*/class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() demo() }原创 2016-01-08 17:28:14 · 411 阅读 · 0 评论 -
Swift数组
///数组/*let: 表示不可变数组var: 可变数组*/import UIKitclass ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() demo1() } /原创 2016-01-08 17:27:28 · 464 阅读 · 0 评论 -
Swift循环
//循环import UIKitclass ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() demo3() } //下划线表示忽略对应位置的值 func demo3() { for _原创 2016-01-08 17:26:22 · 325 阅读 · 0 评论 -
Swift字符串
import UIKit/*swift中 也可以使用NSStringswift: String 结构体 效率更高 支持遍历OC : NSString 继承NSObject 是对象 不支持遍历*/class ViewController: UIViewController { override func viewDidLoad() { sup原创 2016-01-08 17:25:15 · 472 阅读 · 0 评论 -
Swift Playground
//: Playground - noun: a place where people can play// 让开发和 '玩' 一样/*左边: 代码区右边: 运行结果显示区无需编译 直接看到开发效果作用: 方便初学者迅速演练 方便测试代码*//*语法:初始化 OC alloc / initWithXXX alloc / init原创 2016-01-08 17:23:58 · 851 阅读 · 0 评论 -
swift闭包的强引用
import UIKitclass ViewController: UIViewController {// var finishedCallBack: (html: String) -> ()? var finishedCallBack: ((html: String) -> ())? override func viewDidLoad() {原创 2016-01-08 17:31:34 · 1539 阅读 · 0 评论 -
swift之block的循环引用
ViewController#import "ViewController.h"#import "NetworkTools.h"/* 接触循环引用 打破引用循环即可1.不使用成员变量 来调用闭包2.__weak or __unsafe_unretained */@interface ViewController ()@property (nonatomic, str原创 2016-01-10 12:51:19 · 1372 阅读 · 0 评论 -
Swift 1.构造函数-必选属性
ViewController.swiftimport UIKitclass ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() //alloc init = () //自定义对象 打印内存是内存地址原创 2016-01-10 12:57:55 · 509 阅读 · 0 评论 -
Swift之小项目实战
ViewController.swiftimport UIKitclass ViewController: UITableViewController { //声明模型数组 var persons: [Person]? override func viewDidLoad() { super.viewDidLoad()原创 2016-01-10 13:00:14 · 1145 阅读 · 0 评论 -
Swift 2.构造函数-子类构造
ViewController.swiftimport UIKitclass ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() //alloc init = () //自定义对象 打印内存是内存地址原创 2016-01-10 13:02:23 · 659 阅读 · 0 评论 -
Swift 3.构造函数-重载构造函数
ViewController.swiftimport UIKitclass ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() //alloc init = () //自定义对象 打印内存是内存地址原创 2016-01-10 13:04:35 · 1757 阅读 · 0 评论 -
Swift 4.构造函数-KVC构造
ViewController.swiftimport UIKit/*在swift中 所有的类和类的方法 都是共享的 在同一个命名空间 所有的类都是共享的命名空间 是项目名称 */class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoa原创 2016-01-10 13:06:04 · 1566 阅读 · 0 评论 -
Swift 5.懒加载
ViewController.swiftimport UIKitclass ViewController: UIViewController { //swift中 懒加载有非常特殊的写法 //实际上懒加载是 闭包 lazy var nameLabel: UILabel = { print("我懒了么") le原创 2016-01-10 13:07:09 · 1121 阅读 · 0 评论 -
Swift 7.OC单例
ViewController.m#import "ViewController.h"#import "单例-Swift.h"//OCd调用 swift 需要导入桥接文件 命名空间-Swift.h 文件@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {原创 2016-01-10 13:09:44 · 463 阅读 · 0 评论 -
Swift 8.set&get方法
ViewController.swiftimport UIKitclass ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let p = Person() print(p.title)原创 2016-01-10 13:11:09 · 1197 阅读 · 0 评论 -
swift基本语法
import UIKit/*1.只有 .swift文件 所有的声明和实现都在同一个文件 并且相关的代码都需要写在 {}内2.快捷键: option + click swift最常用的快捷键 没有之一 查看对象的描述信息3.print 和 OC中的NSLog一样 打印*/class ViewController: UIViewController { overr原创 2016-01-08 17:22:35 · 465 阅读 · 0 评论 -
swift与OC之间不得不知道的21点
swfit和OC间的 联系1.swift句尾不需要分号 ,除非你想在一行中写三行代码就加分号隔开。 2.swift不要写main函数 ,程序默认从上往下执行 3.swift不分.h和.m文件 ,一个类只有.swift一个文件 4.swift不在有地址的概念5.swift数据类型都会自动判断 , 只区分变量var 和常量let 6.强制转换格式反过来了原创 2015-07-13 09:29:58 · 598 阅读 · 0 评论 -
Swift之泛型类型与泛型参数
import Foundationfunc swapTwoInts(inout a: Int, inout b: Int){ let temporaryA = a a = b b = temporaryA}func swapTwoStrings(inout a: String, inout b: String) { let temporaryA = a原创 2015-07-10 11:45:25 · 1119 阅读 · 0 评论 -
Swift教程之typealias取代OC的typedef
//MARK:-------swift中的typedef--------------//使用 关键字定义类型别名,类似typedeftypealias NSInteger = Intvar value : NSInteger = 45value = 12print(value);//MARK:-------String--------------let label = "The原创 2015-07-09 14:08:10 · 1615 阅读 · 0 评论 -
Swift教程之元组类型
//MARK:--------------元组------------/*-------------------------------------------------------------元组类型(tuple)元组类型可以将任意数据类型组装成一个元素元组类型在作为函数返回值的时候特别适用,可以为函数返回更多的用户需要的信息。*///创建元组1let (x, y) = (1原创 2015-07-09 14:03:14 · 615 阅读 · 0 评论 -
Swift教程之可选类型【问号的用法】
//MARK:-----------可选类型?的用法------------/*-------------------------------------------------------------可选类型(变量名: 类型?)这个值要么存在,并且等于x,要么根本不存在。可选类型类似于Objective-C中指针的nil值,但是nil只对类(class)有用,指对象不存在,而Swift原创 2015-07-09 14:11:03 · 784 阅读 · 0 评论 -
Swift教程之NSDictionary
//MARK:----------字典--------------/* 字典(key : value)*///如果类型信息已知,使用[:]声明空字典。let emptyDictionary1 = [:]let emptyDictionary2 = Dictionary()let emptyDictionary3 = [String: Float]()print(emptyDiction原创 2015-07-09 14:02:08 · 1405 阅读 · 0 评论 -
OC调用Swift
修改main.m文件#import #import "Root.h"int main(int argc, const char * argv[]){ @autoreleasepool { Root *rt = [[Root alloc] init]; [rt desc]; } return 0;}OC文件:Root.原创 2015-07-09 14:55:27 · 2516 阅读 · 0 评论 -
Swift教程之解包操作【感叹号的用法】
//MARK:-----------可选类型!的用法------------/* 解包(!的用法)如果确定一个可选类型的对象的值一定存在,那么我们使用 !进行解包获取它的值,或者使用Optional Binding。*/let possibleString: String? = "An optional string."print(possibleString!) // 解包,我确定po原创 2015-07-09 14:12:00 · 1538 阅读 · 0 评论 -
Swift调用OC和C
Swift文件:main.swiftimport Foundation//Swift调用C函数desc1()//Swift调用OC//拿到OC类var funcClass = Root()funcClass.desc2()OC文件:Root.h#import @interface Root : NSObject-(void)desc2;@endRoot原创 2015-07-09 14:48:17 · 1197 阅读 · 0 评论 -
Swift教程之String的运用
import Foundation//1、字符//用 Character 定义单个字符:let money: Character = "¥"var face: Character = "原创 2015-07-09 11:35:10 · 679 阅读 · 0 评论 -
Swift教程之扩展
import Foundation//扩展就是添加新功能。扩展和 Objective-C 中的分类(categories)类似。【不过与Objective-C不同的是,Swift 的扩展没有名字。】//扩展可以添加新的计算属性,但是不可以添加存储属性,也不可以向已有属性添加属性观测器(property observers)。//MARK:----------计算型属性(Computed P原创 2015-07-10 11:26:37 · 456 阅读 · 0 评论 -
Swift教程之函数
import Foundation//func 函数名(形参: 形参类型) -> 返回类型//MARK:----------1.函数定义-----------//单参数func sayHello(name: String) -> String{ return "Hello again, " + name + "!"}//函数调用print(sayHello("小红"))原创 2015-07-10 11:41:22 · 483 阅读 · 0 评论 -
Swift教程之代理协议
import Foundation//协议的语法//MARK: - 1、协议的定义protocol FirstProtocol{ // 协议内容}protocol AnotherProtocol{ // 协议内容}//MARK: - 2、实现协议//在类型名称后加上协议名称,中间以冒号:分隔即可实现协议;实现多个协议时,各协议之间用逗号,分隔stru原创 2015-07-10 11:42:50 · 696 阅读 · 0 评论 -
循环标签之蛇和梯子游戏
//--------蛇和梯子游戏//摇色子,向前走,蛇是后退,梯子是上升let finalSquare = 25 //最终位置//TODO:这啥意思?var board = [Int](count: finalSquare + 1, repeatedValue: 0)board[03] = +08; board[06] = +11; board[09] = +09; board[10]原创 2015-07-10 11:36:19 · 1109 阅读 · 0 评论 -
Swift教程之条件语句
//MARK:----if条件语句//iflet isOK = trueif isOK{ print("我好了")}else{ print("我没好")}//三元运算符var sex = isOK ? "男生":"女生"print(sex)//MARK:----switch条件语句//当匹配的 case 分支中的代码执行完毕后,程序会终止switch语句原创 2015-07-10 11:34:10 · 577 阅读 · 0 评论 -
Swift教程之循环语句
import Foundation//MARK:-----for循环//for-infor index in 1...5{ print("\(index) * 5 = \(index*5) ")}//求3的10次幂//如果不需要知道区间内每一项的值,你可以使用下划线(_)var answer = 1for _ in 1...10{ answer *= 3}原创 2015-07-10 11:32:22 · 517 阅读 · 0 评论 -
Swift教程之枚举语法
import Foundation//MARK:-------枚举语法-----------//不像 C 和 Objective-C 一样,Swift 的枚举成员在被创建时不会被赋予一个默认的整数值enum CompassPoint{ case North case South case East case West}enum Planet{原创 2015-07-10 11:30:14 · 881 阅读 · 0 评论 -
Swift教程之结构体
import Foundation//结构体struct Student{ var name = "" var age = 0 func test() { print("test") }}//所有结构体都有一个自动生成的成员逐一构造器,用于初始化新结构体实例中成员的属性let vga = Student(name: "原创 2015-07-10 11:28:21 · 539 阅读 · 0 评论 -
Swift教程之运算符
import Foundation//4、复合赋值操作符var a = 1a += 2//一元减运算符(一个数值前加了符号-,叫作一元减运算符)let three = 3let minusThree = -three //minusThree = -3let plusThree = -minusThree // plusThree = 3//一元加运算符(一元加运算符(+)返原创 2015-07-10 11:25:05 · 715 阅读 · 0 评论 -
Swift之文件管理
import Foundation//一个存储属性就是存储在特定类或结构体的实例里的一个常量或变量struct FixedLengthRange { var firstValue: Int let length: Int}var rangeOfThreeItems = FixedLengthRange(firstValue: 0, length: 3)// 该区间表示整原创 2015-07-10 11:48:17 · 797 阅读 · 0 评论