實現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...