我正在开发一个应用程序,它向web服务发出请求,一旦web服务回答(在JSON中)我在另一个视图中解码结果(repository.swift)
我只需要在我的另一个视图(Swype.swift)中使用存储在存储库中的值
这是我解码JSON的代码:
if let json = NSJSONSerialization.JSONObjectWithData(urlData!, options: nil, error: nil) as? [String:AnyObject] {
for (_, value) in json {
if let dict = value as? [String:AnyObject] {
let repo = Repository(jsonData: dict)
repos.append(repo)
}
}
}
我的“存储库”类:
class Repository {
var idobjet: String?
var title: String?
var price: String?
var description: String?
var added: String?
var userid: String?
var user_name: String?
var user_zipCode: String?
var category_id: String?
var category_label: String?
var subcategory_id: String?
var subcategory_label: String?
var picture_url: String?
init(jsonData: [String:AnyObject]) {
self.idobjet = jsonData["id"] as? String
self.title = jsonData["title"] as? String
self.price = jsonData["price"] as? String
self.description = jsonData["description"] as? String
self.added = jsonData["addedDate"] as? String
self.userid = jsonData["userid"] as? String
self.user_name = jsonData["user_name"] as? String
self.user_zipCode = jsonData["user_zipCode"] as? String
self.category_id = jsonData["category_id"] as? String
self.category_label = jsonData["category_label"] as? String
self.subcategory_id = jsonData["subcategory_id"] as? String
self.subcategory_label = jsonData["subcategory_label"] as? String
self.picture_url = jsonData["picture_url"] as? String
}
}
var repos = [Repository]()
我需要在其他视图中获取“picture_url”,“title”和“Description”值,以创建Imageview和其他一些字段:
//Construct the imgUrl to get an image URL for the pages
let urlString: NSString = "picture_url" Values
if let url = NSURL(string: urlString as String) {
if let data = NSData(contentsOfURL: url) {
newCard.image = UIImage(data: data)!
newCard.content = "title" value
newCard.desc = "price" value
self.data.append(newCard)
NSLog("fetch new data")
}
}
}
答案 0 :(得分:0)
根据有多少视图控制器使用此字段,可能最简单的解决方案是定义一个属性,该属性将Repository
对象保存在目标视图控制器中,然后在segue之前将其设置在父视图控制器中(使用(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
方法)。
另一方面,如果必须经常访问这些字段,那么设置视图控制器可以依赖的数据模型类可能更方便。
答案 1 :(得分:-1)
好的,有多种方法可以解决这个问题。
以下是我的建议:
将Repository对象初始化为全局变量。
{{1}}
对象" repo"是全球性的,可以在应用程序中使用。只是要小心,因为对象是可选的。