Alamofire总是在请求中返回nil

时间:2015-07-14 13:05:13

标签: ios json swift null alamofire

通常Alamofire与简单的网址合作很好:

" http://somesite.com/folder/file.json"

但是当我使用时:

" http://somesite.com/folder/(jsonName.text).json

它总是给我一个零... jsonName也是一个TextField ......

整个财务总监:

import UIKit
import CoreLocation
import Alamofire
import SwiftyJSON
import CoreData

typealias CompletionHandler = (obj:AnyObject?, error:Bool?) -> Void

 class LoginViewController: UIViewController, UITabBarControllerDelegate, UITextFieldDelegate, NSURLConnectionDelegate {

    let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate

    @IBOutlet weak var wePrepareQuestLabel: UILabel!

    @IBOutlet weak var downQuestProgres: UIActivityIndicatorView!

    @IBOutlet weak var doNotCloseAppLabel: UILabel!

    @IBOutlet weak var loginBgImage: UIImageView!

    @IBOutlet weak var EmptyCodeError: UILabel!

    @IBOutlet weak var loginTabBarItem: UITabBarItem!

    @IBOutlet weak var QuestCodeTextField: UITextField!

    @IBOutlet weak var loginTextFieldImage: UIImageView!

    @IBOutlet weak var downloaded: UIButton!

    @IBOutlet weak var createQuestButton: UIButton!





    @IBAction func createQuest(sender: UIButton) {



        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        let vc = storyboard.instantiateViewControllerWithIdentifier("WebViewController") as! UIViewController
        self.presentViewController(vc, animated: true, completion: nil)

    }


    let Path: String = ""


    @IBAction func QuestFetchButton(button: UIButton) {

         if QuestCodeTextField.text.isEmpty {

       EmptyCodeError.hidden = false
        }

         else if IJReachability.isConnectedToNetwork() {

        }
        else
        {
            QuestCodeTextField.hidden = true
            button.hidden = true
            EmptyCodeError.hidden = true
            createQuestButton.hidden = true
            doNotCloseAppLabel.hidden = false
            wePrepareQuestLabel.hidden = false
            loginTextFieldImage.hidden = true
            downQuestProgres.hidden = false
            self.downloaded.hidden = false


//            questDownloadSaveJSON()

            var objThisVC = LoginViewController()
            objThisVC.callAndGetResponse { (obj, error) -> Void in

                if (obj != nil) {
                    self.setUpDataInCoreData(obj)
                    print("ALL DIE")
                    self.performSegueWithIdentifier("QuestsListViewController", sender: nil)
                }
                else {
                    println("Response nil!!")
                }
            }





        }
        }



    var file:NSFileHandle?
    var pathURL: NSURL
        {
            let folder = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as! String
            let path = folder.stringByAppendingPathComponent("\(QuestCodeTextField.text).json")
            let url = NSURL(fileURLWithPath: path)


            return url!


    }




    var code: String = ""

    override func viewDidLoad() {
        super.viewDidLoad()

      QuestCodeTextField.text = code



        self.QuestCodeTextField.delegate = self;



    }

    func setUpDataInCoreData(obj:AnyObject?){




        println("Web Serviece Response \(obj)")

        let dirEvent = obj as! NSDictionary
        var aryEvent = dirEvent.valueForKey("events") as! NSArray

        var indexEvent : Int = 0;

        for (dirContent) in aryEvent
        {
            // Create Event Instance
            var newItem: Events = NSEntityDescription.insertNewObjectForEntityForName("Events", inManagedObjectContext: self.appDelegate.cdh.backgroundContext!) as! Events

            newItem.title = dirContent.valueForKey("title") as! String
            newItem.indexID = String(indexEvent++) as String

            println(newItem.title)
            println(newItem.indexID)

            var indexContent : Int = 0;
            var aryContent = dirContent.valueForKey("content") as! NSArray

            for (dirContentDetail) in aryContent{

                var contentEntity: Content = NSEntityDescription.insertNewObjectForEntityForName("Content", inManagedObjectContext: self.appDelegate.cdh.backgroundContext!) as! Content

                contentEntity.content_type = dirContentDetail.valueForKey("content_type") as! String
                contentEntity.visible = dirContentDetail.valueForKey("visible") as! Bool
                contentEntity.indexID = String(indexContent++) as String


                println(contentEntity.content_type)
                println(contentEntity.visible)


                if contentEntity.content_type == "text"{

                    contentEntity.data_type = dirContentDetail.valueForKey("data") as! String

                }
                else if contentEntity.content_type == "image" || contentEntity.content_type == "audio" || contentEntity.content_type == "video" || contentEntity.content_type == "choice" {

                    contentEntity.data_type  = ""
                    if (dirContentDetail.valueForKey("data") != nil && dirContentDetail.valueForKey("data")?.count>0 )
                    {

                        var indexImage : Int = 0;

                        var aryDTImages = dirContentDetail.valueForKey("data") as! NSArray

                        if aryDTImages.count > 0 {
                            for strContentDetail in aryDTImages as! [String]{

                                var objDtImg : DataTypeImage = NSEntityDescription.insertNewObjectForEntityForName("DataTypeImage", inManagedObjectContext: self.appDelegate.cdh.backgroundContext!) as! DataTypeImage

                                var strURL : NSString = NSString(string: strContentDetail)

                                objDtImg.urlString = strURL as String
                                objDtImg.indexID = String(indexImage++) as String
                                objDtImg.dtImages = contentEntity


                                // her have to set image to content
                                contentEntity.content = newItem
                            }
                        }

                    }
                }

                // here have to set entity to content
                contentEntity.content=newItem


            }// this is the end of content for loop


        }// end of aryEvent


        // here to save statement
        self.appDelegate.cdh.saveContext(self.appDelegate.cdh.backgroundContext!)

//        self.table.reloadData()



    }



    func callAndGetResponse(complitionHandler : CompletionHandler){
        complitionHandler(obj: nil, error: true)

        Alamofire.request(.GET, "http://g57732cr.bget.ru/\(QuestCodeTextField.text).json").responseJSON() {
            (_, _, data, error) in

            if error == nil {
                complitionHandler(obj: data, error: false)
            }
            else{
                complitionHandler(obj: nil, error: true)
                  self.performSegueWithIdentifier("QuestsListViewController", sender: nil)
            }


            // Fetch all data from Core Data
            //self.fetchAllData()
        }



    }


    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


    // Hide keyboard by tap on the rest of the view
    override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {

        view.endEditing(true)

    }

    //ReturnButton hides keyboard
    func textFieldShouldReturn(textField: UITextField) -> Bool {
        self.view.endEditing(true)
        return false
    }


    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if (segue.identifier == "QuestsListViewController"){
            var destination = segue.destinationViewController as! UINavigationController
             let VC = destination.topViewController as! QuestListViewController
         VC.questCode = self.QuestCodeTextField.text


        }
    }


}

0 个答案:

没有答案