[英]parse json object in swift 2
我是iOS和Swift編程的新手,我正在嘗試創建一個解析json對象的方法
我的json如下
{
status : true;
data :[
"url" : "",
"startDate" : "",
"endDate" : "",
...
]
}
我在swift中的代碼是這樣的
進口基金會
class SplashResponse {
let STATUS = "status";
let DATA = "data";
let URL = "Url"
let CONTACT_NO = "ContactNo";
let SPLASH_IMAGE = "SplashImage";
let SPLASH_ID = "SplashId";
let TITLE = "Title";
let NO_VIEW = "NoView";
let IS_ACTIVE = "isActive";
let START_DATE = "StartDate";
let END_DATE = "EndDate";
var status : Bool
var url : String
var contactNo : String
var splashImage : String
var splashId : Int
var title : String
var numOfViews : Int
var isActive : Bool
var startDate : String
var endDate : String
init(data : NSDictionary){
status = data[STATUS] as! Bool;
if (status == true) {
if let item = data[DATA] as? [String: AnyObject] {
url = item[URL] as! String;
contactNo = item[CONTACT_NO] as! String;
splashImage = item[SPLASH_IMAGE] as! String;
splashId = item[SPLASH_ID] as! Int;
title = item[TITLE] as! String;
numOfViews = item[NO_VIEW] as! Int;
isActive = item[IS_ACTIVE] as! Bool;
startDate = item[START_DATE] as! String;
endDate = item[END_DATE] as! String;
}
} else {
url = "";
contactNo = "";
splashImage = "";
splashId = -1;
title = "";
numOfViews = -1;
isActive = false;
startDate = "";
endDate = "";
}
}
}
我收到了以下錯誤
Return from initializer without initializing all stored properties
您的問題是,如果if let item = ...
條件失敗,編譯器不知道如何初始化您的值。
您有兩個選項可用於status
條件,但在true
分支內部,您創建了一個沒有其他分支的新條件,因此編譯器正確地抱怨未初始化的存儲屬性。
我的建議是首先安全地解包data[DATA]
而不制作新的范圍,然后使用這些值。
錯誤消息很清楚,
從初始化程序返回而不初始化所有存儲的屬性
顯然,您的所有屬性都是存儲屬性。
因此,您必須確保一旦初始化程序返回, 每個存儲的屬性都將具有它的值 。 它可以是零或一些值。
在你的情況下,首先,
status = data[STATUS] as! Bool;
可能會失敗,因此所有其余的都不會被執行。
即使status == true
可能會成功,但此條件帶來的所有代碼都可能失敗。 這違反了我剛才提到的規則。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.