Swift小技巧 三

2022-08-05 18:12:12 字數 4389 閱讀 3431

實現tableview滾動到底部的功能

//獲得底部的位置

let bottomoffset = cgpoint(x: 0, y: scrollview.contentsize.height-scrollview.bounds.height)

//設定scrollview顯示的位置

scrollview.setcontentoffset(bottomoffset, animated: true)

string與nsstring擷取字串的區別

//string

let str = "my string"

let startindex = str.index(str.startindex, offsetby: 3)

let endindex = str.index(str.startindex, offsetby: 7)

let substr = str[startindex...endindex]//"stain"

//nsstring

let mynsstring = str as nsstring

mynsstring.substringwithrange(nsrange(location: 0, length: 3))

struct globalkey 

//固定的路徑

struct globalpath

//伺服器資訊

struct serversetting

}//使用

print(globalkey.notificationkey.welcome)//name(_rawvalue: hellokey)

print(globalkey.serversetting.serverip)

print(globalkey.globalpath.documents)//...

如何實現string與date之間的互相轉換

/* 首先需要知道dateformat中,各個字母所代表的含義

g 年代標誌符

y 年m 月

d 日h 時 在上午或下午 (1~12)

h 時 在一天中 (0~23)

m 分s 秒

s 毫秒

e 星期

d 一年中的第幾天

f 一月中第幾個星期幾

w 一年中第幾個星期

w 一月中第幾個星期

a 上午 / 下午 標記符

k 時 在一天中 (1~24)

k 時 在上午或下午 (0~11)

z 時區

*///string->date

let datestring = "02-03-2017 10:22:30"

let dateformatter = dateformatter()

dateformatter.dateformat = "dd-mm-yyyy hh:mm:ss"

let date = dateformatter.date(from: datestring)//"mar 2, 2017, 10:22 am"

//date->string

let date = date()

let dateformatter = dateformatter()

dateformatter.dateformat = "dd-mm-yyy hh:mm:ss"

let datestring = dateformatter.string(from: date)//"02-05-2017 13:57:25"

如何在可變陣列中插入新的元素

var array = ["a","b"]

//新增乙個元素在末尾

//新增乙個新的陣列在末尾

let new = ["c","d"]

array += new

//指定位置插入單個元素

array.insert("e", at: 0)

//指定位置插入陣列

array.insert(contentsof: new, at: 0)

如何使用空合運算子(??)

//空合運算子的作用:如果可選值為nil,則返回運算子後方的值,否則返回可選值解包後的值

var str: string?

str ?? "1"//結果為"1"

str = "c"

str ?? "1"//結果為"c"

如何獲得本地bundle和網路

//////////////////獲得本地bundle中的//////////////////////

////////////獲得網路:方法一////////////////

func getdatafromurl(url: url, completion: @escaping (_ data: data?, _ response: urlresponse?, _ error: error?) -> void) .resume()

}//執行上方建立的方法,以及實現閉包內容

func downloadimage(url: url)

print(response?.suggestedfilename ?? url.lastpathcomponent)

print("download finished")

dispatchqueue.main.async()

}}//最後使用

imageview.contentmode = .scaleaspectfit

downloadimage(url: checkedurl)

}//////////////方法二////////////////

extension uiimageview

dispatchqueue.main.async()

}.resume()

}func downloadedfrom(link: string, contentmode mode: uiviewcontentmode = .scaleaspectfit)

downloadedfrom(url: url, contentmode: mode)

}}//使用

檢視user defaults寫入的plist資訊

//寫入了鍵值對:pwd-123456

userdefaults.standard.set("123456", forkey: "pwd")

for (key, value) in userdefaults.standard.dictionaryrepresentation()

如何快速清除字串前後無用的空格和換行

let string = "  \t\t  這是內容!  \n \t  \n  "

let newstring = string.trimmingcharacters(in: characterset.whitespacesandnewlines)//"這是內容!"

如何快速將乙個陣列順序混淆打亂

//給mutablecollection擴充套件乙個方法,該方法的必須要條件是indices.iterator.element == index

extension mutablecollection where indices.iterator.element == index

for (firstunshuffled , unshuffledcount) in zip(indices, stride(from: c, to: 1, by: -1))

let i = index(firstunshuffled, offsetby: d)

swap(&self[firstunshuffled], &self[i])}}

}extension sequence

}//使用

let x = [1, 2, 3].shuffled()

// x == [2, 3, 1]

let fivestrings = stride(from: 0, through: 100, by: 5).map(string.init).shuffled()

// fivestrings == ["20", "45", "70", "30", ...]

var numbers = [1, 2, 3, 4]

numbers.shuffle()

// numbers == [3, 2, 1, 4]

Swift小技巧 二

如何解決閉包內部的迴圈引用問題 通過定義捕獲列表解決 lazy var someclosure void string 如何獲得某個變數的型別字串let string hello let stringarray one two let dictionary key 2 列印具體內容 print st...

python小技巧(三)

關於if name main 的含義與用法 當你在寫.py檔案的時候,一般是以兩種方式存在的 1.作為指令碼直接執行 2.作為模組給別人匯入。你的 在被執行的時候,python直譯器會先去讀取你的python 然後定義一些全域性的內建變數,而我們常常寫的這個 name 就是其中的變數之一。有些人會判...

excel實用小技巧(三)

場景需求 在excel中的第四列內容由前三列合併成 說到這個,大家可能說很簡單啊,不就是將前三個的內容輸入後加分號 然後再加換行 alt enter 也許內容較少的時候可以這麼做,但是效率太低,數量多的時候那不就要累死,那不如想想怎麼實現高效處理,提高工作效率 其實就是想偷懶 這也是該發揮excel...