从另一个视图调用对象

时间:2015-08-24 18:34:49

标签: ios json swift

我正在开发一个应用程序,它向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")

                        }
                    }
                }

2 个答案:

答案 0 :(得分:0)

根据有多少视图控制器使用此字段,可能最简单的解决方案是定义一个属性,该属性将Repository对象保存在目标视图控制器中,然后在segue之前将其设置在父视图控制器中(使用(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender方法)。

另一方面,如果必须经常访问这些字段,那么设置视图控制器可以依赖的数据模型类可能更方便。

答案 1 :(得分:-1)

好的,有多种方法可以解决这个问题。

以下是我的建议:

将Repository对象初始化为全局变量。

{{1}}

对象" repo"是全球性的,可以在应用程序中使用。只是要小心,因为对象是可选的。