Swift小技巧 三

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

實現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中的//////////////////////

if let filepath = bundle.main.path(forresource: "imagename", oftype: "jpg"), let image = uiimage(contentsoffile: filepath)

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

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實戰技巧

swift實戰技巧 給oc呼叫的方法需要新增 objc標記,一般的action target的處理方法,通知的處理方法等需要新增 objc標...

excel小技巧

領導發過來一個excel檔案,裡面有四個sheet 但是他拖到只顯示右邊的兩個sheet 十分神奇。 我把左邊的兩個sheet點選出來之後就...

Xcode 小技巧

1 手動新增 warning 在不確定的 bug 錯誤 待定 處,手動新增 warning 行,在編譯時間提醒自己需要處理的地方。 2 由於...