2015-02-18 6 views
5

मैं स्विफ्ट पढ़ने के लिए नया हूं लेकिन इसका कोई मतलब नहीं है इसका मतलब क्या है। नीचे दिए गए कोड की रेखा पर, मेरे पास पैरामीटर [स्ट्रिंग] के बाद "अभिव्यक्तियों की सूची में अपेक्षित अभिव्यक्ति" है। के रूप में अच्छी तरह से एक ही बिंदु यह "अपेक्षित ',' विभाजक की तलाश में है पर। मेरा मानना ​​है कि। इन से संबंधित हैंस्विफ्ट - अभिव्यक्तियों की सूची में अपेक्षित अभिव्यक्ति

AppDelegate.submitLacunaRequest(module: "empire", method: "login", parameters[String]:["myuserid", "mypassword", "mykey"]) { 

      responseObject, error in 

      // some network error or programming error 

      if error != nil { 
       println("error = \(error)") 
       println("responseObject = \(responseObject)") 
       return 
      } 

      // network request ok, now see if login was successful 

      if let responseDictionary = responseObject as? NSDictionary { 
       if let errorDictionary = responseDictionary["error"] as? NSDictionary { 
        println("error logging in (bad userid/password?): \(errorDictionary)") 
       } else if let resultDictionary = responseDictionary["result"] as? NSDictionary { 
        println("successfully logged in, refer to resultDictionary for details: \(resultDictionary)") 
       } else { 
        println("we should never get here") 
        println("responseObject = \(responseObject)") 
       } 
      } 
     } 

यहाँ AppDelegate

से संबंधित कोड
public func submitLacunaRequest (#module: String, method: String, parameters: AnyObject, completion: (responseObject: AnyObject!, error: NSError!) -> (Void)) -> NSURLSessionTask? { 

    let session = NSURLSession.sharedSession() 
    let url = NSURL(string: "https://us1.lacunaexpanse.com")?.URLByAppendingPathComponent(module) 
    let request = NSMutableURLRequest(URL: url!) 
    request.HTTPMethod = "POST" 
    request.setValue("application/json-rpc", forHTTPHeaderField: "Content-Type") 


    let requestDictionary = [ 
     "jsonrpc" : "2.0", 
     "id"  : 1, 
     "method" : "login", 
     "params" : ["myuserid", "mypassword", "mykey"] 
    ] 

    var error: NSError? 
    let requestBody = NSJSONSerialization.dataWithJSONObject(requestDictionary, options: nil, error: &error) 
    if requestBody == nil { 
     completion(responseObject: nil, error: error) 
     return nil 
    } 

    request.HTTPBody = requestBody 

    let task = session.dataTaskWithRequest(request) { 
     data, response, error in 

     // handle fundamental network errors (e.g. no connectivity) 

     if error != nil { 
      completion(responseObject: data, error: error) 
      return 
     } 

     // parse the JSON response 

     var parseError: NSError? 
     let responseObject = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: &parseError) as? NSDictionary 

     if responseObject == nil { 

      // because it's not JSON, let's convert it to a string when we report completion (likely HTML or text) 

      let responseString = NSString(data: data, encoding: NSUTF8StringEncoding) as String 
      completion(responseObject: responseString, error: parseError) 
      return 
     } 

     completion(responseObject: responseObject, error: nil) 
    } 
    task.resume() 

    return task 
} 
+1

कोड अपूर्ण है। – gabbler

+0

@gabbler इसके बारे में क्षमा करें। मैंने सोचा था कि समस्या को दिखाने के लिए आवश्यक सभी चीजें थीं – Number1

+0

आपने एप्पलडेगेट में विधि कहां रखी? – gabbler

उत्तर

2

आप एक पैरामीटर के लिए बाहरी पैरामीटर नाम का उपयोग कर रहे हैं जब फ़ंक्शन कॉल, लेकिन टी वह बाहरी पैरामीटर आपके फ़ंक्शन घोषणा में परिभाषित नहीं है। बस इस तरह इसका इस्तेमाल करें।

submitLacunaRequest(module: "empire", "login", ["myuserid", "mypassword", "mykey"]) {

+0

मुझे अभी भी कॉल – Number1

+0

में अतिरिक्त तर्क मिलता है आप कहते हैं कि यह ऐपडिलेगेट के अंदर एक फ़ंक्शन है, यह कक्षा के अंदर सार्वजनिक नहीं हो सकता है। – gabbler

+0

उपरोक्त कोड को अपडेट किया गया है लेकिन अभी भी "कॉल में अतिरिक्त तर्क" मिलता है मेरा मानना ​​है कि मैंने सबकुछ का पालन किया है लेकिन मैं गलत हो सकता हूं। – Number1

1

आप समारोह कॉल कर रहे है गलत तरीके से। आप parameters परम में [String] जरूरत नहीं ...

AppDelegate.submitLacunaRequest(module: "empire", method: "login", parameters: ["myuserid", "mypassword", "mykey"]) { 
    ... 
} 
संबंधित मुद्दे