在数组中附加JsonFile(UrL)以在应用程序

时间:2015-10-16 15:24:24

标签: alamofire swifty-json

我正在尝试将我的Json文件中的数据添加到应用程序中。我想将Json文件中的作者名称附加到空数组中。 我在运行模拟时添加了所有需要添加的区域,我得到一个空数组。我需要它在模拟器上显示作者名字。

是否有人知道我需要对我的代码做些什么来使其工作?

我的代码:

var AuthorGlobal = [String]()

class ViewController: UIViewController, UITextFieldDelegate{


@IBOutlet weak var DisplayAuthor: UITextView!

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    DisplayAuthor.text="\(AuthorGlobal)"
}

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated);
    Alamofire.request(.GET, "http://178.62.83.50/newsletters.json")
        .responseJSON { response in
            //                print(response.request)  // original URL request
            //                print(response.response) // URL response
            //                print(response.data)     // server data
            //  print(response.result)   // result of response serialization

            if let _ = response.result.value {
                // print("JSON: \(JSON)")
            }

            let json = JSON(data: response.data!)
            if let Author = json["NewsLetter"][0]["Author"].string {
                AuthorGlobal.append(Author)

            }
            if let LastName = json["NewsLetter"][0]["LastName"].string {
                print(LastName)
            }
            if let ArticleTitle = json["NewsLetter"][0]["ArticleTitle"].string {
                //Now you got your value
                print(ArticleTitle)
            }
            if let Author = json["NewsLetter"][1]["Author"].string {
                //Now you got your value
                print(Author)
            }
            if let LastName = json["NewsLetter"][1]["LastName"].string {
                //Now you got your value
                print(LastName)
            }
            if let ArticleTitle = json["NewsLetter"][1]["ArticleTitle"].string {
                //Now you got your value
                print ("Article Title: " + (ArticleTitle))
            }

    }

}

1 个答案:

答案 0 :(得分:0)

我刚尝试将json放入我的文件系统并在本地加载。下面是我在Swift 2上的代码,一切正常。您可能希望检查服务调用中正确的JSON数据。此外,尝试逐行与我的代码进行比较,看看你是否错过了什么。对我来说为时已晚,所以请耐心等待,不要在你的代码中指出确切的根本原因!

var AuthorGlobal = [String]()

class ViewController: UIViewController, UITextFieldDelegate {

    @IBOutlet weak var DisplayAuthor: UITextView!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
//        DisplayAuthor.text="\(AuthorGlobal)"
    }

    override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated);

        let filePath = NSBundle.mainBundle().pathForResource("1", ofType: "json")
        var fileContents : String = ""

        do {
            fileContents = try String(contentsOfFile: filePath!, encoding: NSUTF8StringEncoding)
        } catch (_) {

        }

        var json : Dictionary<String,Array<Dictionary<String,String>>> = Dictionary()

        do {
            json = try NSJSONSerialization.JSONObjectWithData(fileContents.dataUsingEncoding(NSUTF8StringEncoding)!, options:NSJSONReadingOptions.AllowFragments) as! Dictionary<String, Array<Dictionary<String, String>>>
        } catch (_) {

        }

        let array = json["NewsLetter"] as Array?

        if let author = array?[0]["Author"] {
            AuthorGlobal.append(author)
        }

        print(AuthorGlobal) // This prints - ["Tom"]

        if let LastName = array?[0]["LastName"] {
            print(LastName) // This prints - Holton
        }

        if let ArticleTitle = array?[0]["ArticleTitle"] {
            //Now you got your value
            print(ArticleTitle) // This prints - XcodeGhost: Apple suffers a major malware infection inside the iOS app store.
        }

        if let Author = array?[1]["Author"] {
            //Now you got your value
            print(Author) // This prints - Sam
        }

        if let LastName = array?[1]["LastName"] {
            //Now you got your value
            print(LastName) // This prints - Devaney
        }

        if let ArticleTitle = array?[1]["ArticleTitle"] {
            //Now you got your value
            print ("Article Title: " + (ArticleTitle)) // This prints - Article Title: Google is 2 Billion Lines of Code
        }
    }
}