Alamofire
を使い、サーバからxmlを取得しています。
パース後、タグ名と要素をDictionary
にセットしreturn
しています。
lang
1import Foundation 2import Alamofire 3 4class Test : NSObject { 5 6 override init() { 7 super.init() 8 } 9 10 func login(uid: NSString) -> Dictionary<String, String> { 11 12 var dict = Dictionary<String, String>() 13 let parameters = [ 14 "param": "<?xml version='1.0' encoding='utf-8'?><TEST xmlns='http://tempuri.org/TEST.xsd'><LOGIN><ID>" + uid + "</ID><PW>cf8894c2288f</PW></LOGIN></TEST>" 15 ] 16 17 let configuration = NSURLSessionConfiguration.defaultSessionConfiguration() 18 configuration.timeoutIntervalForResource = 1800 19 20 Alamofire.Manager(configuration: configuration) 21 Alamofire.request(.POST, "https://192.168.0.110:xxxx/Test/", parameters: parameters) 22 .responseString { (request, response, responseData, error) in 23 24 var str: String! = responseData 25 let xmlString = str 26 27 var parser = MyClass.XMLParser(xml: xmlString, element:"UserName") 28 parser.parse() 29 dict["UserName"] = parser.returnValue! 30 31 var parser = MyClass.XMLParser(xml: xmlString, element:"ErrMsg") 32 parser.parse() 33 dict["ErrMsg"] = parser.returnValue! 34 } 35 return dict 36}
呼び出し側
lang
1let testModel = TestModel() 2let dict = testModel.login(uid) 3println(dict)
実行結果
[:]
return dict
の時点で何も入っていないようです。
TestModelにメンバ変数を持たせたりもしましたがダメでした。
lang
1 2class Test : NSObject { 3 4 var testString : String! 5 6 override init() { 7 super.init() 8 } 9 10 func login(uid: NSString) -> Dictionary<String, String> { 11 12 ...(中略)... 13 14 .responseString { (request, response, responseData, error) in 15 16 self.testString = responseData 17 } 18}
呼び出し側
lang
1let test = Test() 2test.login(uid) 3println(testModel.testString)
他にも戻り値をクラスにしてみたりと、いろいろ試してはみたのですが、
.responseString {...}
から出てしまうとnil
になります。
解決方法をご存知の方がいらっしゃいましたら、教えていただけると助かります。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。