Swift3.0 從入門到放棄之基礎語法篇(一)

前言: 作為一個水平一般彰檬,沒有追求的OC開發(fā)者氏淑,從swift1.0開始就買了幾本swift參考書言询,直到現(xiàn)在swift3.0+了還沒看完一本完整的swift參考書攒岛,沒有寫過一個完整的swif項目甚是慚愧酪术,其實期間也斷斷續(xù)續(xù)學了一陣子妆毕,沒有堅持住涝影,加之公司項目一直是以OC為主句旱,大量時間浪費在寫業(yè)務代碼,老是抱著swift不成熟鬼廓,API還不穩(wěn)定等一等的井底之蛙心態(tài)肿仑,現(xiàn)在是時候反省下自己了,所謂知途迷返碎税,亡羊補牢尤慰,為時不晚。(從現(xiàn)在開始雷蹂,立刻伟端,馬上學習swif的必要性重要性可以參考下微博@沒故事的卓同學的文章: Swift 再等等?我的答案是:快上車http://www.reibang.com/p/2452cb269ae2
話不多說匪煌,先擼為敬责蝠,以下是記錄整理學習小碼哥Mr why 的swift課程筆記,以作為復習查看之用
一 . 初識swift
Playground是什么?
從Xcode6開始出現(xiàn)(Swift開始出現(xiàn)) 翻譯為:操場/游樂場萎庭,對于學習Swift基本語法非常方便霜医,所見即所得(快速查看結(jié)果),語法特性發(fā)生改變時,可以快速查看.
Swift最基本的語法變化:

  1. swift中如何導入框架驳规? 直接 import 框架名稱 即可
    例如 import UIKit
  2. 如何定義標識符支子?
    定義標識符必須告知系統(tǒng) 該標識符是一個變量還是常量
    格式: let/var 標識符的名稱 : 標識符的數(shù)據(jù)類型 = 值
  3. 語句結(jié)束有何變化?
    一般情況下不需要寫; 如果一行中有多條語句;則需要以;分割
  4. 怎么打印內(nèi)容达舒?
    print(a)
    二. 常量&變量
    變量的基本使用
    let a :Int =40
    //a=20// 錯誤寫法,當一個字段定義為常量時是不可以修改的
    var b : Int = 60
    一般習慣寫成 var b = 60 (swift中的類型推導)
    變量的基本使用
    let a :Int =40
    //a=30// 錯誤寫法,當一個字段定義為常量時是不可以修改的
    var b : Int = 60
    一般習慣寫成 var b = 60 (swift中的類型推導)
    三. swift中數(shù)據(jù)類型
    swift類型的介紹
    Swift中的數(shù)據(jù)類型也有:整型/浮點型/對象類型/結(jié)構體類型等等
    先了解整型和浮點型
    整型
    有符號
    Int8 : 有符號8位整型
    Int16 : 有符號16位整型
    Int32 : 有符號32位整型
    Int64 : 有符號64位整型
    Int : 和平臺相關(默認,相當于OC的NSInteger)
    無符號
    UInt8 : 無符號8位整型
    UInt16 : 無符號16位整型
    UInt32 : 無符號32位整型
    UInt64 : 無符號64位整型
    UInt : 和平臺相關(常用,相當于OC的NSUInteger)(默認)
    浮點型
    Float : 32位浮點型
    Double : 64浮點型(默認)
    // 定義一個Int類型的變量m,并且賦值為10
    var m : Int = 10
    // 定義一個Double類型的常量n,并且賦值為3.14
    let n : Double = 3.14
    swift中的類型推導
    swift是強類型的語言
    swift中任何一個標識符都有明確的類型
    注意:
    如果定義一個標識符時有直接進行賦值,那么標識符后面的類型可以省略. 因為swift有類型推導,會自動根據(jù)后面的賦值來決定前面的標識符的數(shù)據(jù)類型
    可以通過option+鼠標左鍵來查看變量的數(shù)據(jù)類型
    // 定義變量時沒有指定明確的類型,但是因為賦值給i一個20.20為整型.因此i為整型
    var i = 20
    // 錯誤寫法:如果之后賦值給i一個浮點型數(shù)值,則會報錯
    // i = 30.5
    // 正確寫法
    var j = 3.33
    j = 6.66
    swift中基本運算
    /
    import UIKit
    // 定義變量時沒有指定明確的類型,但是因為賦值給i一個20.20為整型.因此i為整型
    var i=20
    //i=30.5 // 錯誤寫法:如果之后賦值給i一個浮點型數(shù)值,則會報錯
    // 正確寫法
    var j=3.33
    j=6.66
    /

    Swift中在進行基本運算時必須保證類型一致,否則會出錯
    相同類型之間才可以進行運算
    因為Swift中沒有隱式轉(zhuǎn)換
    數(shù)據(jù)類型的轉(zhuǎn)化
    Int類型轉(zhuǎn)成Double類型:Double(標識符)
    Double類型轉(zhuǎn)成Int類型:Int(標識符)
    */
    let a = 10
    let b = 3.14
    // 錯誤寫法
    //let c = a + b
    //let c = a * b
    // 正確寫法
    let c = Double(a)+b
    let d = a + Int(b)

三.邏輯分支
(一). 分支的介紹
分支即if/switch/三目運算符等判斷語句
通過分支語句可以控制程序的執(zhí)行流程
(二). if分支語句
和OC中if語句有一定的區(qū)別
判斷句可以不加(),在Swift的判斷句中必須有明確的真假叹侄,不再有非0即真巩搏,必須有明確的Bool值,Bool有兩個取值:false/true
/
//1 swift 中if的寫法
//1> if后面的()可以省略
//2>判斷句不在有非0/nil即真趾代,判斷句中必須有明確的真假Bool值贯底,Bool值有兩個取值:false/tru
// 演練一:
let a = 10
// 錯誤寫法: 不再有非0即真 必須有明確的Bool值 false/true
//if a {
// print("a")
//}
// 正確寫法
if a > 9 {
print(a)
}
//2. swift 中else if的用法:用法和if的用法一致
let score = 92
if score < 0 || score>100 {
print("不合理的分數(shù)")
} else if score < 60 {
print("不及格")
} else if score < 80 {
print("及格")
} else if score < 90 {
print("良好")
} else if score <= 100 {
print("優(yōu)秀")
}
/

(三). 三目運算符
Swift 中的 三目 運算保持了和 OC 一致的風格
/
//3. 三目運算符
//取二者最大值
let x = 20
let y = 30
// if寫法
//var result = 0
//if m > n {
// result = m
//}else {
// result = n
//}
let result = x > y ? x :y
/

(四).guard的使用
guard是Swift2.0新增的語法
它與if語句非常類似,它設計的目的是提高程序的可讀性
guard語句必須帶有else語句,它的語法如下:
當條件表達式為true時候跳過else語句中的內(nèi)容禽捆,執(zhí)行語句組內(nèi)容
條件表達式為false時候執(zhí)行else語句中的內(nèi)容笙什,跳轉(zhuǎn)語句一般是return、break胚想、continue和throw
guard 條件表達式 else {
// 條換語句
break
}
語句組
/
//例子
var age = 18
func online(age : Int) -> Void {
guard age >= 18 else {
print("回家去找媽媽")
return
}
print("小伙子可以上網(wǎng)了")
}
online(age: age)
/

(五).switch分支
switch的介紹
Switch作為選擇結(jié)構中必不可少的語句也被加入到了Swift中
只要有過編程經(jīng)驗的人對Switch語句都不會感到陌生
但蘋果對Switch進行了大大的增強琐凭,使其擁有其他語言中沒有的特性
switch的簡單使用
基本用法和OC用法一致
不同之處:
switch后可以不跟()
case后可以不跟break(默認會有break)
/
//1. switch的基本用法
let sex = 0
switch sex {
case 0:
print("男")
case 1:
print("女")
default:
print("其他")
}
/

簡單使用補充1:
一個case判斷中,可以判斷多個值
多個值以,隔開
/
let sex1 = 0
switch sex1 {
case 0,1:
print("正常人")
default:
print("其他")
}
/

簡單使用補充2:
如果希望出現(xiàn)之前的case穿透,則可以使用關鍵字fallthrough
/
let sex2 = 0
switch sex2 {
case 0:
print("男")
fallthrough
case 1:
print("女")
default:
print("其他")
}
/

Switch支持多種數(shù)據(jù)類型
浮點型的switch判斷
/
let f = 3.14
switch f {
case 3.14:
print("π")
default:
print("not π")
}
/

支持字符串類型
字符串的使用后面會詳細講解
/
let m = 5
let n = 10
var results = 0
let operation = "+"
switch operation {
case "+" :
results = m + n
case "-" :
results = m - n
case "
" :
results = m * n
case "/" :
results = m / n
default:
results = 0
print("非法操作符")
}
/*
switch支持區(qū)間判斷
什么是區(qū)間?
通常我們指的是數(shù)字區(qū)間:010,100200
swift中的區(qū)間常見有兩種
半開半閉區(qū)間:0..<10 表示:0~9,不包括10
閉區(qū)間:0...10 表示:0~10
*/
let scores = 88
switch score {
case 0..<60:
print("不及格")
case 60..<80:
print("及格")
case 80..<90:
print("良好")
case 90..<100:
print("優(yōu)秀")
default:
print("滿分")
}

四. 循環(huán)
循環(huán)的介紹
在開發(fā)中經(jīng)常會需要循環(huán),常見的循環(huán)有:for/while/do while.這里我們只介紹for/while,因為for/while最常見
//for循環(huán)的寫法
// OC寫法
//for (int i = 0;i< 10; i++){
// NSLog(@"%d", i);
//}
//swift寫法 for后面的()可以省
//最常規(guī)寫法
// 1.傳統(tǒng)寫法
//for var i = 0; i <10; i++ {
// print(i)
//}
// 2.區(qū)間for循環(huán) for循環(huán)的forin寫法
for i in 0..<10 {
print(i)
}
//3. 特殊寫法:如果在for循環(huán)中不需要用到下標i 可以使用 _ 來代替
for _ in 0..<10 {
print("hello")
}
//while和do while循環(huán)
//while循環(huán)
//1>.while的判斷句必須有正確的真假,沒有非0即真
//2>.while后面的()可以省略
var a=0
while a < 10 {
a ++
}
//do while循環(huán)
//使用repeat關鍵字來代替了do
let b = 0
repeat {
print(b)
b++
} while b < 20

五. 字符串
字符串的介紹
字符串在任何的開發(fā)中使用都是非常頻繁的浊服,OC和Swift中字符串的區(qū)別统屈,在OC中字符串類型時NSString,在Swift中字符串類型是String
OC中字符串@"",Swift中字符串""
使用 String 的原因:
String 是一個結(jié)構體,性能更高牙躺, NSString 是一個 OC 對象愁憔,性能略差, String 支持直接遍歷
Swift 提供了 String 和 NSString 之間的無縫轉(zhuǎn)換
//1. 字符串的定義
//定義不可變字符串
let str = "hello world"
for c in str.characters {
print(c)
}
//2.字符串的使用
//2.1獲取字符串的長度
//獲取字符集合,再獲取集合的count屬性
//定義可變字符串
let count = str.characters.count
var str0 = "hello world"
//2.2遍歷字符串
for c in str.characters{
print(c)
}
//3.字符串的拼接
//3.1兩個字符串之間的拼接
let str1 = "我是碼農(nóng)界"
let str2 = "古天樂"
let str3 = str1 + str2
print(str3)
//3.2字符串和其他標識符之間的拼接
let name = "mxp"
let age = 18
let height = 1.88
let info = "my name is (name), my age is (age), my height is (height)"
//3.3拼接字符串時孽拷,字符串的格式化 比如時間:03:04
let min = 2
let second = 18

let timeString = String(format:"%2d:%02d",arguments :[min,second])
print(timeString)

//4.字符串的截取
/*Swift中提供了特殊的截取方式
該方式非常麻煩
Index創(chuàng)建較為麻煩
簡單的方式是將String轉(zhuǎn)成NSString來使用
在標識符后加:as NSString即可
*/
let myStr = "www.520.it.com"
var subStr = (myStr as NSString).substring(from: 4)
subStr = (myStr as NSString).substring(to: 3)
subStr = (myStr as NSString).substring(with: NSRange(location:4,length:5))
//swift截取方式
// 4.1定義字符串
let str5 = "http://weibo.com/2187793237/profile?topnav=1&wvr=6"
// 4.2截取開始位置
let fromIndex = str5.startIndex
let header = str5.substring(from: fromIndex)
// 4.3 截取結(jié)束位置
//let toIndex = str5.endIndex.advancedBy(-3) //swift2.0寫法
let toIndex = str5.index(str5.endIndex, offsetBy: -3) //swift3.0寫法
// 4.4 截取中間的字符串
//var range = string.rangeOfString("520")//swift2.0寫法
let range = str5.range(of:"520")//swift3.0寫法

六. 數(shù)組
(一). 數(shù)組的介紹

數(shù)組(Array)是一串有序的由相同類型元素構成的集合
數(shù)組中的集合元素是有序的吨掌,可以重復出現(xiàn)
Swift中的數(shù)組
swift數(shù)組類型是Array,是一個泛型集合

(二). 數(shù)組的初始化/定義
數(shù)組分成:可變數(shù)組和不可變數(shù)組
使用let修飾的數(shù)組是不可變數(shù)組
使用var修飾的數(shù)組是可變數(shù)組
*/
// 定義一個可變數(shù)組,必須初始化才能使用
var arr : [String] = String
// 定義一個不可變數(shù)組
let arr0 : [NSObject] = ["Fsociety" as NSObject,28 as NSObject]

//在聲明一個Array類型的時候可以使用下列的語句之一
var stuArr1 : Array<String>
var stuArr2 : [String]

//聲明的數(shù)組需要進行初始化才能使用脓恕,數(shù)組類型往往是在聲明的同時進行初始化的
// 定義時直接初始化
var array = ["古天樂","吳彥祖","陳冠希"]
// 先定義,后初始化
var array0 : Array<String>
array0 = ["古天樂","吳彥祖","陳冠希"]
// (三). 對(可變)數(shù)組的基本操作
// 添加數(shù)據(jù)
array0.append("劉亦菲")

// 刪除元素
array0.removeLast()

// 修改元素
array0[1] = "艾薇兒"
// 取值
array0[0]

(四). 數(shù)組的遍歷
// 遍歷數(shù)組
for i in 0..<array.count {
print(array[i])
}
// forin方式
for item in array{
print(item)
}

// 設置遍歷的區(qū)間
for item in array[0..<2] {
print(item)
}
// 遍歷數(shù)組的同時獲取下標值
let names = ["古天樂","吳彥祖","陳冠希"]
for (index, name) in names.enumerated() {
print(index)
print(name)
}

(五). 數(shù)組的合并
// 注意:只有相同類型的數(shù)組才能合并
var array01 = ["古天樂","吳彥祖","陳冠希"]
var array02 = ["艾薇兒","景甜","范冰冰"]
var array03 = array01 + array02

// 不建議一個數(shù)組中存放多種類型的數(shù)據(jù)
var array04 = [25, 44, "古天樂"] as [Any]
var array05 = ["艾薇兒","景甜","范冰冰",18] as [Any]
array04 + array05

七. 字典
(一). 字典的介紹

字典允許按照某個鍵來訪問元素
字典是由兩部分集合構成的膜宋,一個是鍵(key)集合,一個是值(value)集合
鍵集合是不能有重復元素的进肯,而值集合是可以重復的激蹲,鍵和值是成對出現(xiàn)的
Swift中的字典
Swift字典類型是Dictionary,也是一個泛型集合
*/

//(二). 字典的初始化
//Swift中的可變和不可變字典
//使用let修飾的數(shù)組是不可變字典
//使用var修飾的數(shù)組是可變字典
// 定義一個不可變字典
let dict = ["name" : "Fsocoiety", "age" : 18] as [String : Any]
// 定義一個可變字典
var dict1 : [String : NSObject] = String :NSObject

//在聲明一個Dictionary類型的時候可以使用下面的語句之一
var dict2: Dictionary<Int, String>
var dict3: [Int: String]
//聲明的字典需要進行初始化才能使用江掩,字典類型往往是在聲明的同時進行初始化的
// 定時字典的同時,進行初始化
var dict4 = ["name" : "Fsocoiety", "age" : 18] as [String : Any]

// swift中任意對象,通常不使用NSObject,使用AnyObject
var dict5 : Dictionary<String, AnyObject>

dict5 = ["name" : "陳冠希" , "age" : 28] as [String : Any] as Dictionary<String, AnyObject>

//(三). 字典的基本操作
// 添加數(shù)據(jù)
dict5["height"] = 1.89 as AnyObject?
dict5["weight"] = 72.0 as AnyObject?
// 刪除字段
dict5.removeValue(forKey: "height")
dict5
// 修改字典
dict5["name"] = "古天樂" as AnyObject?
dict5.updateValue( "古天樂" as AnyObject , forKey: "name")
dict5
// 查詢字典
dict5["name"]

//(四).字典的遍歷
// 遍歷字典中所有的值
for value in dict5.values {
print(value)
}
// 遍歷字典中所有的鍵
for key in dict5.keys {
print(key)
}
// 遍歷所有的鍵值對

//(五).字典的合并
// 字典的合并
var dict6 = ["name" : "PrinceMei","age":18] as [String : Any]

var dict7 = ["height" : 1.88, "Tel" : "+86 18526366356"] as [String : Any]

// 字典不可以相加合并
for (key,value) in dict6 {
dict7[key] = value
}

八. 元組
(一). 元組的介紹

元組是Swift中特有的,OC中并沒有相關類型
那什么是元組呢?
它是一種數(shù)據(jù)結(jié)構学辱,在數(shù)學中應用廣泛
類似于數(shù)組或者字典
可以用于定義一組數(shù)據(jù)
組成元組類型的數(shù)據(jù)可以稱為“元素”

// (二). 元組的定義
//元組的常見寫法
("0001","張三豐", 80, 70)
// 給元素加上元素名稱,之后可以通過元素名稱訪問元素
(id : "0001",name: "張三豐", age: 80, weight:70)
// (三). 元組的簡單使用
//用元組來描述一個HTTP的錯誤信息

// 元組:HTTP錯誤提示
let array = [404, "Not Found"] as [Any]

// 寫法一:
let error = (404, "Not Found")
print(error.0)
print(error.1)
// 寫法二:
let error1 = (errroCode : 404, errorInfo : "Not Found")
print(error1.errroCode)
print(error1.errorInfo)

// 寫法三:
let (errorCode,errorInfo) = (404,"Not Found")
print(errorCode)
print(errorInfo)

/*
九. 可選類型
(一). 可選類型的介紹

注意:
可選類型時swift中較理解的一個知識點
暫時先了解,多利用Xcode的提示來使用
隨著學習的深入,慢慢理解其中的原理和好處
概念:
在OC開發(fā)中,如果一個變量暫停不使用,可以賦值為0(基本屬性類型)或者賦值為空(對象類型)
在swift開發(fā)中,nil也是一個特殊的類型.因為和真實的類型不匹配是不能賦值的(swift是強類型語言)
但是開發(fā)中賦值nil,在所難免.因此推出了可選類型
可選類型的取值:
空值
有值
*/

// (二). 定義可選類型
//定義一個可選類型有兩種寫法
//最基本的寫法
//語法糖(常用)

// 錯誤寫法
// let string : String = nil //swift2.0
// 注意:name的類型是一個可選類型,但是該可選類型中可以存放字符串.
// 正確寫法:
// 寫法一:定義可選類型,語法糖(常用, 極力推薦)
let string : String? = nil

// 寫法二:定義可選類型
let name : Optional<String> = nil

// (三).可選類型的使用
// 演練一:給可選類型賦值
// 定義可選類型

var string0 : Optional <String> = nil

// 給可選類型賦值
// 錯誤寫法:因此該可選類型中只能存放字符串
//string0 = 134
// 正確寫法:
string0 = "I am Handsome"
// 打印結(jié)果
print(string0 as Any)

// 演練二:取出可選類型的值
// 取出可選類型的真實值(解包)
print(string0!)

// 注意:如果可選類型為nil,強制取出其中的值(解包),會出錯
//string0 = nil
//print(string0!) // 報錯

// 正確寫法:
if string0 != nil {
print(string0!)
}

// 簡單寫法:為了讓在if語句中可以方便使用string
// 可選綁定
if let str = string0 {
print(str)
}

// (四). 真實應用場景
//目的:讓代碼更加嚴謹
// 通過該方法創(chuàng)建的URL,可能有值,也可能沒有值.
// 錯誤寫法:如果返回值是nil時,就不能接收了
// 如果字符串中有中文,則返回值為nil,因此該方法的返回值就是一個可選類型,而使用一個NSURL類型接收是錯誤的

//let url : NSURL = NSURL(String: "www.520it.com") //錯誤寫法

// 正確寫法:使用可選類型來接收
//let url : NSURL? = NSURL(String: "www.520it.com")
// 該方式利用類型推導
let url1 = NSURL(string: "www.520it.com")

// 通過url來創(chuàng)建request對象:在使用可選類型前要先進行判斷是否有值
// 該語法成為可選綁定(如果url有值就解包賦值給tempURL,并且執(zhí)行{})
if let tempUrl = url1 {
let request = NSURLRequest(url: tempUrl as URL)
}

十. 類型轉(zhuǎn)化
常見的類型轉(zhuǎn)化符號

is : 用于判斷一個實例是否是某一種類型
as : 將實例轉(zhuǎn)成某一種類型
*/

//例子
// 1.定義數(shù)組
let array : [AnyObject] = [18 as AnyObject,"Jack" as AnyObject,1.85 as AnyObject]
// 2.取出數(shù)組中的第一個元素
let objc = array.first!
// 3.判斷第一個元素是否是一個Int類型
if objc is Int {
print("是Int類型")

}else {
print("非Int類型")
}

// 4.將objc轉(zhuǎn)成真正的類型來使用
// 4.1.as? 將AnyObject轉(zhuǎn)成可選類型,通過判斷可選類型是否有值,來決定是否轉(zhuǎn)化成功了
let age = objc as? Int
print(age!)
// 4.2.as! 將AnyObject轉(zhuǎn)成具體的類型,但是注意:如果不是該類型,那么程序會崩潰
let age1 = objc as! Int
print(age1)

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市环形,隨后出現(xiàn)的幾起案子策泣,更是在濱河造成了極大的恐慌,老刑警劉巖抬吟,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件萨咕,死亡現(xiàn)場離奇詭異,居然都是意外死亡火本,警方通過查閱死者的電腦和手機危队,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來钙畔,“玉大人茫陆,你說我怎么就攤上這事∏嫖觯” “怎么了簿盅?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我桨醋,道長棚瘟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任喜最,我火速辦了婚禮偎蘸,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘返顺。我一直安慰自己禀苦,他們只是感情好,可當我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布遂鹊。 她就那樣靜靜地躺著振乏,像睡著了一般。 火紅的嫁衣襯著肌膚如雪秉扑。 梳的紋絲不亂的頭發(fā)上慧邮,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天,我揣著相機與錄音舟陆,去河邊找鬼误澳。 笑死,一個胖子當著我的面吹牛秦躯,可吹牛的內(nèi)容都是我干的忆谓。 我是一名探鬼主播,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼踱承,長吁一口氣:“原來是場噩夢啊……” “哼倡缠!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起茎活,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤昙沦,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后载荔,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體盾饮,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年懒熙,在試婚紗的時候發(fā)現(xiàn)自己被綠了丘损。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡工扎,死狀恐怖号俐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情定庵,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站蔬浙,受9級特大地震影響猪落,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜畴博,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一笨忌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧俱病,春花似錦官疲、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至溢吻,卻和暖如春维费,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背促王。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工犀盟, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蝇狼。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓阅畴,卻偏偏與公主長得像,于是被迫代替她去往敵國和親迅耘。 傳聞我的和親對象是個殘疾皇子贱枣,可洞房花燭夜當晚...
    茶點故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內(nèi)容