Swift學習筆記六:常見概念(一)
七、常見概念
1.範圍Range、ClosedRange和NSRange的使用
//區間分為閉區間和半開區間
import Foundation
let closedRange: ClosedRange = 1...3 //閉區間
let intArray = ["1", "2", "3", "4", "5"]
intArray[closedRange] //使用閉區間,獲得陣列中的從第2個位置開始,至第4個位置的所有元素,並返回由這三個元素組成的陣列
let halfOpenRange: Range = 1..<3 //半開區間
intArray[halfOpenRange]
var myUrl = "coolKetang.com"
let startIndex = myUrl.index(myUrl.startIndex, offsetBy: 0) //獲得字串中的一個索引位置。從起點開始,偏移值為0,所以獲得的索引為字串的起始位置
let endIndex = myUrl.index(myUrl.startIndex, offsetBy: 10)
let myRange = startIndex..<endIndex//使用兩個索引位置,建立半閉合區間
myUrl[myRange] //擷取字串
//NSRange也是表示區間的類,來自OC語言,它包括位置和長度兩個屬性
let range = NSRange.init(location: 1, length: 2
intArray[Range.init(range)!] //擷取陣列
//注意:也可以用來擷取字串,但是需要將字串轉換成OC語言中的NSString字串型別
let myWebsite = myUrl as NSString
myWebsite.substring(with: NSRange.init(location: 0, length: 10))
2.點CGPoint和變形CGAffineTransform的使用
//CG表示來自CoreGraphic這個跨平臺的框架
import UIKit //表示介面工具框架
import QuartzCore //表示核心繪圖和動畫框架
let zeroPoint = CGPoint.zero//定義一個點物件,並設定他的位置為原點
var point = CGPoint()
point.x
point.y
point.debugDescription//點物件:由大括號包括,由x和y兩個值組合而成
point.equalTo(CGPoint(x: 0, y: 0)) //判斷兩個點物件的值是否相同
var secondPoint = CGPoint(x: 10, y: 10)
//通過仿射變換,可以對點物件進行變形。仿射變換定義在二維空間上,可以完成平移、旋轉和縮放等效果。
let transform: CGAffineTransform = CGAffineTransform.identity//在此初始化一個仿射變換物件,其值為原始值
let moveTransform = transform.translatedBy(x: 10, y: 10) //水平和垂直方向各平移10的距離
let thirdPoint = secondPoint.applying(moveTransform) //給點物件應用平移後的仿射變換
let rotateTransform = moveTransform.rotated(by: 90 * 3.1415/180.0) //對仿射變換物件進行旋轉90度,旋轉的角度為弧度方式
let fouthPoint = thirdPoint.applying(rotateTransform)
let pointFromString = CGPointFromString("{100, 100}") //點物件和字串可以相互轉換
3.尺寸CGSize的使用詳解(匯入框架同2)
//定義一個尺寸物件,尺寸物件包含寬度和高度兩個引數。
let zeroSize = CGSize.zero
let size = CGSize(width: 20, height: 10)
size.width
size.height
size.debugDescription
//通過仿射變換,可以對尺寸物件進行變形。
let transform: CGAffineTransform = CGAffineTransform.identity
let moveTransform = transform.translatedBy(x: 10, y: 10)
let secondSize = size.applying(moveTransform)
let rotateTransform = moveTransform.scaledBy(x: 2.0, y: 1.0) //將仿射變換物件在水平方向上放大兩倍,垂直方向上不變
let thirdSize = size.applying(rotateTransform)
thirdSize.equalTo(size) //判斷尺寸大小是否相同
thirdSize.equalTo(CGSize(width: 40, height: 10))
let fifthSize = CGSizeFromString("{200, 100}") //尺寸物件和字串可以相互轉換
4.範圍CGRect的使用詳解
//CGRect物件可以看作點物件和尺寸物件的組合
let rect = CGRect(x: 0, y: 0, width: 100, height: 100)
//區域物件由大括號包括,並由x、y、寬度和高度四個值組合而成
rect.debugDescription
//區域物件可以由點物件和尺寸物件組合而成
let origin = CGPoint.zero
let size = CGSize(width: 100, height: 100)
let secondRect = CGRect(origin: origin, size: size)
secondRect.origin.x
secondRect.origin.y
secondRect.size.width
secondRect.size.height
//直接查詢區域物件的寬度和高度
secondRect.width
secondRect.height
//通過水平和垂直方向上的最小值和最大值,可以查詢區域物件左上角和右下角的座標
secondRect.minX
secondRect.maxX
secondRect.minY
secondRect.maxY
//判斷該區域是否包含某個指定的點
secondRect.contains(CGPoint(x: 10, y: 10))
//判斷該區域是否包含某個指定的區域
secondRect.contains(CGRect(x: 0, y: 0, width: 50, height: 50))
//判斷區域是否相等
secondRect.equalTo(rect)
//獲取另一個區域物件,該區域物件位於原區域物件的內部,並且和原區域物件的四周保持10的距離
secondRect.insetBy(dx: 10, dy: 10)
//獲得兩個區域相交的區域
secondRect.intersection(CGRect(x: 40, y: 40, width: 100, height: 20))
//判斷兩個區域是否相交
secondRect.intersects(CGRect(x: 80, y: 0, width: 100, height: 100))
//獲得一個區域物件,在水平和垂直方向各偏移10之後的區域
secondRect.offsetBy(dx: 10, dy: 10)
//獲得兩個區域合併之後的區域
secondRect.union(CGRect(x: 50, y: 50, width: 100, height: 100))
//將字串轉換為區域物件
CGRectFromString("{{0, 0}, {100, 100}}")
5.使用NSString對字串進行各種操作
//NS是Cocoa類物件型別的字首,來源於喬布斯建立的另一家公司NeXT
let string = NSString(string: "meet")
let floatString = NSString(format: "%f", 25.0) //浮點數轉換成字串
var secondString = string.appending(" coolketang.") //追加字串
secondString.capitalized//將字串中的單詞轉換為首字母大寫的單詞
//將字串進行不區分大小寫的比較。返回的結果的型別是列舉型別。-1表示當兩個字串進行排序時,當前字串位於進行比較字串的前方。值為0表示兩個字串相同。
//該列舉型別包含三個列舉成員,原始值分別為-1,0和1.可以簡單理解為假如將兩個比較的字串進行排序時,有升序、相同和降序三種結果。
secondString.caseInsensitiveCompare("test").rawValue
secondString.caseInsensitiveCompare("meet coolketang.").rawValue
//比較語句預設採用不區分大小寫的比較方式
secondString.compare("meet coolketang.").rawValue
secondString.caseInsensitiveCompare("coolketang").rawValue
secondString.commonPrefix(with: "meet swift.") //獲得兩個字串共同的字首
secondString.contains("coolketang") //檢查自定義是否包含另一個指定的字串
secondString.data(using: .utf8) //返回包含給定編碼的字串表示形式的資料
secondString.hasPrefix("meet") //檢測字串是否擁有指定內容的字首
secondString.hasSuffix("coolketang.") //檢測字串是否擁有指定內容的字尾
secondString.insert(".", at: secondString.endIndex) //在指定的索引位置上,插入指定的字串
secondString.lengthOfBytes(using: .utf8) //獲得字串在指定編碼規則下的長度資訊
secondString.characters.count//獲得字串中的字元的數量
secondString.lowercased() //獲得字串全部小寫的樣式
secondString.uppercased() //獲得字串全部大寫的樣式
secondString.range(of: "meet")?.lowerBound//獲得指定字串在當前字串中的起始位置和結束位置,位置的值為索引格式
secondString.range(of: "meet")?.upperBound
secondString.removeSubrange(secondString.range(of: "meet")!)//刪除字串指定區間的內容
secondString.replacingOccurrences(of: "coolketang", with: "swift") //將字串中存在的內容,替換為指定的其他內容
secondString[secondString.index(secondString.startIndex, offsetBy: 1)] //獲得從第一個字元開始,向右偏移1位之後的字元
6.日期Date和DateFormatter日期的格式化
var date = Date()
date.addTimeInterval(60 * 60) //獲取當前60分鐘之後的時間
let secondDate = date.addingTimeInterval(60 * 60)
//對兩個時間進行比較,結果為列舉型別,包括-1(小於)、0(等於)、1(大於)
date.compare(date.addingTimeInterval(60 * 60)).rawValue
date.compare(date.addingTimeInterval(0)).rawValue
date.compare(date.addingTimeInterval(-60 * 60)).rawValue
date.description//獲得當前時間字串形式
date.timeIntervalSince(secondDate) //獲得兩個時間之間的差值,單位為秒
date.timeIntervalSince1970
date.timeIntervalSinceNow//獲得指定日期和當前時間的差值
let dateFormatter = DateFormatter() //日期格式化物件
dateFormatter.locale = Locale.current//設定日期格式化物件的本地屬性
dateFormatter.dateStyle = DateFormatter.Style.full//設定日期的樣式為全格式,即包含年、月、日、星期等各種資訊
dateFormatter.string(from: date)
dateFormatter.dateStyle = DateFormatter.Style.long//使用長型別對日期進行格式化
dateFormatter.string(from: date)
dateFormatter.dateStyle = DateFormatter.Style.medium//使用中間樣式對日期進行格式化
dateFormatter.string(from: date)
dateFormatter.dateStyle = DateFormatter.Style.short//使用短間樣式對日期進行格式化
dateFormatter.string(from: date)
dateFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss"//使用自定義日期樣式,對日期進行格式化,注意小時制是12小時進位制
dateFormatter.string(from: date)
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"//hh->HH,小時制變為24小時進位制
dateFormatter.string(from: date)
dateFormatter.dateFormat = "yyyy-MM-dd"
dateFormatter.string(from: date)
dateFormatter.dateFormat = "yyyy-M-dd"//MM->M表示月份簡化,不會對月份補0
dateFormatter.string(from: date)
let dateString = "2017-06-02 18:15:59"//字串轉換成日期
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
let newDate = dateFormatter.date(from: dateString)
//比較兩個日期的先後,先獲得兩個日期和固定參考日期的距離,然後對距離進行比較
(newDate?.timeIntervalSinceReferenceDate)! > date.timeIntervalSinceReferenceDate
7.日曆Calendar和日期元件DateComponents
//通過日曆的日期部件,可以獲得日期的各個部分
let date = Date()
let currentCalendar = Calendar.current
let dateComponents = currentCalendar.dateComponents([Calendar.Component.era,Calendar.Component.year,Calendar.Component.month,Calendar.Component.day,Calendar.Component.hour,Calendar.Component.second,Calendar.Component.minute], from: date) //獲得日期的各個組成部分
dateComponents.era
dateComponents.year
dateComponents.month
dateComponents.day
dateComponents.hour
dateComponents.minute
dateComponents.second
var componrnts = DateComponents() //初始日期部件
componrnts.year = 2017
componrnts.month = 09
componrnts.day = 20
let compents = currentCalendar.date(from: componrnts)
相關推薦
Swift學習筆記六:常見概念(一)
七、常見概念1.範圍Range、ClosedRange和NSRange的使用//區間分為閉區間和半開區間import Foundationlet closedRange: ClosedRange = 1...3 //閉區間let intArray = ["1", "2", "
深度學習筆記六:常見啟用函式總結
一.啟用函式概覽 基本上,入門深度學習的第一件事情就是了解”神經元”的構造,啟用函式算是最基本的一個”部件”了吧.那啟用函式到底有什麼用呢?為什麼需要啟用函式?啟用函式的定義是什麼呢? 下面這篇論文提供了啟用函式的定義以及常見的”飽和”的定義,以及對於啟用函
python程式設計:從入門到實踐學習筆記-Django開發使用者賬戶(一)
讓使用者能夠輸入資料(表單) 在建立使用者賬戶身份驗證系統之前,先新增幾個頁面,讓使用者能偶輸入資料。新增新主題、新增新條目以及編輯既有條目。 新增新主題 1.用於新增主題的表單 建立一個forms.py檔案與models.py放在同一目錄下。 from django import
Angular6學習筆記8: 服務(Service)(1)
服務(Service) 繼學習筆記7,可以使用主從元件,現在繼續學習(服務)Service; 問題:為什麼需要服務? 因為:元件不應該直接獲取或儲存資料,它們不應該瞭解是否在展示假資料。 它們應該聚焦於展示資料,而把資料訪問的職責委託給某個服務。 這次將建立一個 H
Esper學習筆記五:EPL語法(3)
1.Aggregation 類似於SQL中的聚合函式,EPL中聚合函式格式如下: aggregate_function([all|distinct] expression) aggregate_function就是聚合函式的名字,比如avg,sum等。expression通常是事件
Esper學習筆記四:EPL語法(2)
1.select 查詢所有屬性或特定屬性 EPL的select和SQL的select很相近,SQL用*表示查詢表的所有欄位,而EPL用*表示查詢事件流的所有屬性值。SQL查詢某個欄位名,直接在select後跟欄位名就ok,EPL也是將要查詢的屬性名放在select之後。若查多個屬
Esper學習筆記三:EPL語法(1)
1.EPL語法簡介 EPL全稱Event Processing Language,是一種類似SQL的語言,包含了SELECT, FROM, WHERE, GROUP BY, HAVING 和 ORDER BY子句,同時用事件流代替了table作為資料來源,並且能像SQL那樣join,fil
Aras學習筆記 (21) TeamCenter相關概念(轉)
PDM是一門用來管理所有與產品相關的資訊(即描述產品的各種資訊,包括但不限於零部件資訊、結構、配置、文件、CAD 檔案、許可權資訊等)和過程(指產品的發放、變更、審批過程和其它的工作流程,包括對這些過程的定義和管理)的技術。
《組合語言(第3版)(王爽 著)》學習筆記二:基礎知識(2)
1.7 CPU 對儲存器的讀寫 以上講到,儲存器被劃分成多個儲存單元,儲存單元從零開始編號。這些編號可以看作儲存單元在儲存器中的地址。就想一條街,每個房子都有門牌號碼。 CPU 要從記憶體中讀資料,
《組合語言(第3版)(王爽 著)》學習筆記三:基礎知識(3)
1.11 記憶體地址空間(概述) 什麼是記憶體地址空間呢?舉例來講,一個 CPU 的地址匯流排寬度為 10,那麼可以定址 1024 個記憶體單元,這 1024 個可尋到的記憶體單元就構成這個 CPU
【設計模式】學習筆記14:狀態模式(State)
public class GumballMachine { State soldOutState; State noQuarterState; State hasQuarterState; State soldState; State state = soldOutState; int c
Esper學習之六:EPL語法(二)
轉載請註明出處:http://blog.csdn.net/luonanqin 中秋三天,說閒也不閒,調調工作的程式碼,倒還解決不少問題。不過也是因為最近工作忙的緣故,Esper被我冷落不少日子了,趁著今天最後一天,趕緊寫一篇出來。 從
C#.Net 設計模式學習筆記之創建型 (一)
應用 種類 單件 src nag abstract 子類 指定 相關 1、抽象工廠(Abstract Factory)模式 常規的對象創建方法: //創建一個Road對象 Road road =new Road(); new 的問題: 實現依賴,不能應對“具
C#學習筆記-域用戶認證(一)
byte name urn validate finally tostring code date geb public Boolean ValidateDomainUser(string Domain, string UserName, string
Spring Cloud學習筆記之微服務實現(一)(Spring Boot+IDEA)
我們先使用Spring Boot實現一個微服務,業務非常簡單: 1.商品微服務,通過商品id查詢商品的微服務 2.訂單微服務,通過訂單id查詢訂單資料,同時需要呼叫商品微服務查詢出訂單詳情資料對應的商品資料。 說明: 1.對於商品微服務而言,商品微服務是服務的提供者,訂單微服務是服務的消費
公開課學習筆記- 哈佛 電腦科學CS50(一)
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
linux學習筆記之linux常用命令(一)
Linux常用命令 檔案處理命令 許可權管理命令 檔案搜尋命令 幫助命令 使用者管理命令 壓縮解壓命令 網路命令 關機重啟命令 檔案處理命令 命令格式 命令 【-選項】【引數】 ls -la
C++ 學習筆記 變數和基本型別(一)
C++ 學習筆記 一、變數和基本型別概述 型別是所有程式的基礎。型別告訴我們資料代表什麼意思以及可以對資料執行哪些操作。 c++基本型別: 字元型 整型 浮點型 c++ 還提供了可用於自定義資料型別的機制,標準庫正式利用了這些機制定義了許多更復雜的型別,比如可變長字串string 和vector等。此外,
linux學習筆記之常用基本命令(一)
1.幫助命令 man獲取幫助資訊 語法:man[命令或配置檔案] help獲得shell內建命令的幫助資訊 語法:help 命令 例: help cd 常用快捷鍵 ctrl +c: 停止程序 ctrl +l: 清屏 ctrl +q: 退出 tab鍵 :補全命令(常用t
Pyhon網路爬蟲學習筆記—抓取本地網頁(一)
如何用Python爬取本地網頁 一、寫出一個簡單的靜態網頁,下面是我隨便寫的一個 網頁原始碼如下 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT