1.  

1. 定义变量 var name = "***"

定义常量 let name ="*****"

2. swift 变量类型  String, Int, Float, Double

3. swift 逻辑操作符   &&  , ||, !

4. swift 关系运算符 ==, !=, >=, <=

5. swift storyboard界面元素跟code绑定,右键(button , label什么的),左键按住划线到view, 选择对应的code 里的variable or 方法

6. swift 定义类似静态函数: class func methodName() -> type {}

静态变量: static var  name:type =  **** 调用的时候,是className.name() 这样的方式

7. var xxx = Object!  意思是显示转换, “!”代表这个有可能没有值

8. 实例化: myStation = RadioStation.init(name: "KZZP", frequency: 104.7) 或   myStation = RadioStation()

9. 创建新Class, 需要在IDE选Cocoa Touch Class

10.Stretching label, 是自动拉伸,否则,会截断text内容

11.给storyboard 上的button添加方法的另一种操作

12. 数组定义 var myArray: [string] = ["One", "Two"] print(myArray[0])  数组长度:myArray.count  数组扩展:myArray.append("Three"), myArray += ["Four","Five"], myArray.insert("Zero", at: 0) 删除: myArray.remove(at: **)

13. for 循环

for  y in 0 .. <numbers{

}

14. 日期比较  today.compare(date)

15. ios preference 存储

let prefs: UserDefaults = UserDefaults.standard
prefs.set("sherlock.holmes", forKey: "username")
prefs.set(10, forKey: "booksInList")
prefs.synchronize()

let username = prefs.string(forKey: "username")
let booksInList = prefs.integer(forKey: "booksInList")
 
16. core data (example code)
  1. import CoreData
  2. class ViewController: UIViewController, UITableViewDelegate,
  3. UITableViewDataSource {
  4. var managedObjectContext: NSManagedObjectContext! //managed object context
  5.  
  6. func tableView(_ tableView: UITableView, numberOfRowsInSection section:
  7. Int) -> Int{return }
  8.  
  9. override func viewDidLoad(){
  10. let appDelegate: AppDelegate = UIApplication.shared.delegate as!
  11. AppDelegate
  12. managedObjectContext = appDelegate.persistentContainer.viewContext as NSManagedObjectContext
  13. //将contextObject 链接到appDelegate
  14. }
  15.  
  16. func loadBooks() -> [Book] {
  17. let fetchRequest: NSFetchRequest<Book> = Book.fetchRequest()
  18. var result: [Book] = []
  19. do {
  20. result = try managedObjectContext.fetch(fetchRequest)
  21. } catch {
  22. NSLog("My Error: %@", error as NSError)
  23. }
  24. return result
  25. }
  26.  
  27. func tableView(_ tableView: UITableView, numberOfRowsInSection section:
  28. Int) -> Int {
  29. return loadBooks().count
  30. }func tableView(_ tableView: UITableView, cellForRowAt indexPath:
  31. IndexPath) -> UITableViewCell {
  32. guard let cell = tableView.dequeueReusableCell(withIdentifier:
  33. "Cell") else { return UITableViewCell() }
  34. let book: Book = loadBooks()[indexPath.row]
  35. cell.textLabel?.text = book.title
  36. return cell
  37. }
  38.  
  39. @IBAction func addNew(_ sender: Any) {
  40. let book: Book = NSEntityDescription.
  41. insertNewObject(forEntityName: "Book", into:
  42. managedObjectContext) as! Book
  43. book.title = "My Book" + String(loadBooks().count)
  44. do {
  45. try managedObjectContext.save()
  46. } catch let error as NSError {
  47. NSLog("My Error: %@", error)
  48. }
  49. myTableView.reloadData()
  50. }
    //根据实体名查询
    let fetchRequest = NSFetchRequest(entityName: "People")
    //设置查询条件
    let predicate = NSPredicate(format:"id=1 and / or / not name='xx'")
    fetchRequest.predicate=predicate

  do {

    let peopleList = try context.executeFetchRequest(fetchRequest)as! [NSManagedObject]

  1.     for person in peopleListas! [People] {
          print("查询到的人是\(person.name!)")
          //修改操作:将查询到的结果修改后,再调用context.save()保存即可
          if (person.name =="小红"){
             person.name="小花"
          }
           //删除操作:将查询到的额结果删除后,再调用context.save()保存即可
          if (person.name =="小明"){
            context.deleteObject(person)
          }
        }
        }catchlet error{

print("context can't fetch!, Error:\(error)")

  1.  

}

  1.  

do {

  1.  

try context.save()

  1.  

print("保存成功")

  1.  

}catch let error{

  1.  

print("context can't save!, Error:\(error)")

  1.  

}

  1.  

CoreData 多表

多表查询: https://blog.csdn.net/fengsh998/article/details/8123392?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase

多条件查询:

https://blog.csdn.net/qq_29892943/article/details/52765344?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase

CoreData中实体关联关系有三种,一对一,一对多,多对多,举一个简单的例子Accoun和Order之间关系.一个账户有多个订单

图中的RelationShip有三个字段,关联关系的名称,对应的Destination目标表的名字,Inverse表示反向关系,如果没有就是No Inverse.苹果关系建议是为了保证数据之间的一致性,最好设置反向关系.每个Order对应单一的用

户.

 
 
 

设置关联之后还需要设置对应的删除规则(Delete Rule),苹果默认的关联规则是Nullify:

 
 

Deny 关系的Destination中只要有一个对象,就不能删除,如果账户还有订单,就不能删除账户

Nullify 只在逆向关系Optional的时候有效,Accout 删除之后,所有的Order中的account信息设置为nil

Cascade 删除对象后,删除destination所有对象.Account删除之后,会删除所有对应的Order对象.

NoAction 删除对象后,对Destination不做任何操作,在Destination中有大量对象的时候有用

设置关联关系,新建立一个订单,设置Order的关联对象是Account:

  1. do {
  2.  
  3. let account:Account = Account.findAccountByName(name: "FlyElephant")!
  4.  
  5. let privateContext:NSManagedObjectContext = try CoreDataManager.sharedManager.newPrivateQueueContextWithNewPSC()
  6.  
  7. let order:Order = NSEntityDescription.insertNewObject(forEntityName: "Order", into: privateContext) as! Order
  8. order.orderName = "台湾小零食--\(1)"
  9. order.orderNumber = Int32(100)
  10.  
  11. order.account = account
  12.  
  13. if privateContext.hasChanges {
  14. do {
  15. print("保存成功")
  16. try privateContext.save()
  17. } catch {
  18. let nserror = error as NSError
  19. fatalError("Unresolved error \(nserror), \(nserror.userInfo)")
  20. }
  21. }
  22. } catch {
  23. print(error)
  24. }

Account和Order不在同一个Context上下文中,会出现错误,可以在同一个上下文中进行实体对象查询

  1. static func findAccountByName(name:String) -> Account? {
  2.  
  3. let context:NSManagedObjectContext = CoreDataManager.sharedManager.mainQueueContext
  4.  
  5. let fetchRequest:NSFetchRequest<NSFetchRequestResult> = NSFetchRequest(entityName: "Account")
  6.  
  7. let predicate = NSPredicate.init(format: " accountName = %@", name)
  8. fetchRequest.predicate = predicate
  9.  
  10. do {
  11. let searchResults = try context.fetch(fetchRequest)
  12. if searchResults.count > {
  13. let account:Account = searchResults[] as! Account
  14. return account
  15. } else {
  16. return nil
  17. }
  18. } catch {
  19. print(error)
  20. }
  21.  
  22. return nil
  23. }

  1. do {
  2.  
  3. let account:Account = Account.findAccountByName(name: "FlyElephant")!
  4.  
  5. let privateContext:NSManagedObjectContext = try CoreDataManager.sharedManager.newPrivateQueueContextWithNewPSC()
  6.  
  7. let order:Order = NSEntityDescription.insertNewObject(forEntityName: "Order", into: privateContext) as! Order
  8. order.orderName = "FlyElephant-台湾小零食--\(1)"
  9. order.orderNumber = Int32()
  10.  
  11. let accountInContext:Account = privateContext.object(with: account.objectID) as! Account
  12. order.account = accountInContext
  13.  
  14. if privateContext.hasChanges {
  15. do {
  16. print("保存成功")
  17. try privateContext.save()
  18. } catch {
  19. let nserror = error as NSError
  20. fatalError("Unresolved error \(nserror), \(nserror.userInfo)")
  21. }
  22. }
  23. } catch {
  24. print(error)
  25. }

占位符:
NSPredicate *preTemplate = [NSPredicate predicateWithFormat:@"name==$NAME"];
NSDictionary *dic=[NSDictionary dictionaryWithObjectsAndKeys:
@"Name1", @"NAME",nil];
NSPredicate *pre=[preTemplate predicateWithSubstitutionVariables: dic];

分页查询

  1. NSFetchRequest *request = [[NSFetchRequest alloc] init];
  2. NSEntityDescription *entity = [NSEntityDescription entityForName:@"RSSEntryModel" inManagedObjectContext:_managedObjectContext];
  3. [request setEntity:entity];
  4. NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"articleDate" ascending:NO];
  5. NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
  6. [request setSortDescriptors:sortDescriptors];
  7. [request setFetchLimit:21];
  8. [request setFetchOffset:_currentPage * 21];
  9. NSArray *rssTemp = [_managedObjectContext executeFetchRequest:request error:&error];

17  Protocols and Delegates

  1. Protocol Definition
  2. protocol RandomNumberGenerator {
  3. var mustBeSettable: Int { get set }
  4. var doesNotNeedToBeSettable: Int { get }
  5. func random() -> Double
  6. }
  1. import UIKit
  2. // protocol used to send data back to the home view controller's
  3. userDidFinish
  4. protocol GuessDelegate {
  5. func userDidFinish(_ controller:GuessInputViewController, guess:
  6. String)
  7. }
  8. class GuessInputViewController: UIViewController {
  9. var delegate: GuessDelegate?
  10. var previousGuess: String = ""
  11.  
  12. @IBOutlet weak var guessLabel: UILabel!
  13. @IBOutlet weak var guessTextField: UITextField!
  14.  
  15. override func viewDidLoad() {
  16. super.viewDidLoad()
  17.  
  18. // Do any additional setup after loading the view.
  19. if(!previousGuess.isEmpty) {
  20. guessLabel.text = "Your previous guess was \(previousGuess)"
  21. }
  22. guessTextField.becomeFirstResponder()
  23. }
  24. @IBAction func saveGuess(_ sender: AnyObject) {
  25. if let delegate = delegate, let guessText = guessTextField.text {
  26. delegate.userDidFinish(self, guess: guessText)
  27. }
  28. }
  29. }

protocol  XXXDelegate{ func methodA(data)}

classA{

var objectA: XXXDelegate? = nil

objectA.methodA(data)

}

classB : XXXDelegate{

func methodA(data){}

}

这样就实现了两个Controller之间的数据传递

ios swift 知识点记录的更多相关文章

  1. iOS小知识点记录

    1.创建视图的两种方法:用代码创建视图,创建XIB文件.如何决定使用哪种方法?参考法则:如果视图没有子视图,就用代码创建:如果有子视图,就通过XIB文件创建. 2.创建视图的时候,视图控制器会调用lo ...

  2. iOS Swift WisdomScanKit图片浏览器功能SDK

    iOS Swift WisdomScanKit图片浏览器功能SDK使用 一:简介      WisdomScanKit 由 Swift4.2版编写,完全兼容OC项目调用. WisdomScanKit的 ...

  3. C#知识点记录

    用于记录C#知识要点. 参考:CLR via C#.C#并发编程.MSDN.百度 记录方式:读每本书,先看一遍,然后第二遍的时候,写笔记. CLR:公共语言运行时(Common Language Ru ...

  4. iOS开发之记录用户登录状态

    iOS开发之记录用户登录状态 我们知道:CoreData的配置和使用步骤还是挺复杂的.但熟悉CoreData的使用流程后,CoreData还是蛮好用的.今天要说的是如何记录我们用户的登陆状态.例如微信 ...

  5. spring mvc开发过程知识点记录

    给一个客户做的一个小项目,需求就是输入类似一个短网址http://dd.yy/xxxx然后跳转到另外一个域名下的图书文件.(实际很多短网址站都提供API供调用吧,不过客户需求是他自己建立一个短网址服务 ...

  6. javascript知识点记录(1)

    javascript一些知识点记录 1.substring,slice,substr的用法 substring 和slice 都有startIndex 和 endIndex(不包括endInex),区 ...

  7. iOS 常见知识点(三):Lock

    iOS 常见知识点(一):Runtime iOS 常见知识点(二):RunLoop 锁是最常用的同步工具.一段代码段在同一个时间只能允许被有限个线程访问,比如一个线程 A 进入需要保护代码之前添加简单 ...

  8. JavaScript算法与数据结构知识点记录

    JavaScript算法与数据结构知识点记录 zhanweifu

  9. iOS swift的xcworkspace多项目管理(架构思想)

    iOS  swift的xcworkspace多项目管理(架构思想) 技术说明: 今天在这里分享 swift下的 xcworkspace多项目管理(架构思想),能为我们在开发中带来哪些便捷?能为我们对整 ...

随机推荐

  1. Windows系统下curl的下载和配置

    curl的下载和配置 简介:用URL规则在命令行下工作的文件传输工具. 下载:下载地址为 https://curl.haxx.se/download.html,在最底部找到Windows的版本,我下载 ...

  2. 【Ubuntu】Ubuntu中下载特定版本内核和设置某版本内核为默认启动内核

    0. 基本命令 uname -a # 查看当前所使用内核 dpkg -l | grep linux # dpkg后是lmn的l.查看当前操作系统的内核 dekg -l | grep linux-ima ...

  3. [Axure教程]0005.系统函数与变量介绍

    1.变量的种类: [1].全局变量:可以在整个原型的任意位置调用和修改. [2].局部变量:仅作用于某一事件的某一动作内. [3].自定义变量:自行新建的全局变量. 2.Axure函数: [1].特殊 ...

  4. 设计Person类 代码参考

    #include <iostream> using namespace std; class Trapezium { private: int x1,y1,x2,y2,x3,y3,x4,y ...

  5. CSS用户自定义样式

    在浏览器中打开前面写的例子页面,你会发现 <strong> 元素中的文字会比其他文字粗一些.这些样式就是在浏览器定义的默认HTML样式. 而<strong> 元素是红色的,这是 ...

  6. 关于服务器运维人员,该如何管理很多VPS呢?

    众所周知,服务器运营人员的工作内容,主要围绕着公司上下所有服务器.网络等硬件平台的运维工作,对每台服务器的状况,如磁盘.内存.网络.CPU等资源情况都要有明确的了解,还要定期对服务器进行巡检和修复,避 ...

  7. win10下安装scrapy出现错误的处理

    一.背景: 在win10的dos窗口下使用命令pip install scrapy安装scrapy时,出现“ error: Microsoft Visual C++ 14.0 is required. ...

  8. Chisel3 - Tutorial - Tbl

    https://mp.weixin.qq.com/s/e8vJ8claauBtiuedxYYaJw   实现可以动态索引的表.   参考链接: https://github.com/ucb-bar/c ...

  9. 50个SQL语句(MySQL版) 问题十六

    --------------------------表结构-------------------------- student(StuId,StuName,StuAge,StuSex) 学生表 tea ...

  10. Java实现 LeetCode 815 公交路线(创建关系+BFS)

    815. 公交路线 我们有一系列公交路线.每一条路线 routes[i] 上都有一辆公交车在上面循环行驶.例如,有一条路线 routes[0] = [1, 5, 7],表示第一辆 (下标为0) 公交车 ...