所以我有一个需要返回从API端点接收的JSON对象的函数。由于某种原因,这个函数总是返回nil,即使我打印response.result.value时,它完美地包含了API响应,并输入if语句来赋值给returnJSON。非常感谢任何投入!
func storeContact(name: String, number: String, apiToken: String) -> AnyObject? {
var returnJSON: AnyObject?
let contact = ["api_token" : apiToken, "name" : name, "number": number]
Alamofire.request(.POST, "http://sample.app/api/v1/contact", parameters: contact, encoding: .JSON).responseJSON { (response) -> Void in
if let value = response.result.value {
returnJSON = value
}
}
return returnJSON
}
答案 0 :(得分:2)
Alamofire使用异步调用,因为互联网提取总是需要一些时间。在 List<Sozcu> sozcus;
Sozcu sozcu;
String text,text1;
public XMLParser() {
sozcus = new ArrayList<Sozcu>();
}
public List<Sozcu> getCountries() {
return sozcus;
}
public List<Sozcu> parse(InputStream inputStream){
try{
// HttpURLConnection connection =(HttpURLConnection) new URL(url).openConnection();
// InputStream inputStream = connection.getInputStream();
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(false);
XmlPullParser parser = factory.newPullParser();
parser.setInput(inputStream,null);
int eventType = parser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT){
String tagName = parser.getName();
switch (eventType){
case XmlPullParser.START_TAG:
if(tagName.equalsIgnoreCase("item")){
sozcu = new Sozcu();
}
break;
case XmlPullParser.TEXT:
text = parser.getText();
break;
case XmlPullParser.END_TAG:
if(tagName.equalsIgnoreCase("item")){
//countries.add(country);
sozcus.add(sozcu);
}else if(tagName.equalsIgnoreCase("description")){
// country.setRank(text);
sozcu.setDescription(text);
}else if(tagName.equalsIgnoreCase("link")){
// country.setName(text);
sozcu.setLink(text);
}else if(tagName.equalsIgnoreCase("pubDate")){
// country.setPopulation(text);
sozcu.setDate(text);
}else if(tagName.equalsIgnoreCase("title")){
// country.setPopulation(text);
sozcu.setTitle(text);
}else{
}
break;
default:
break;
}
eventType = parser.next();
}
}catch (Exception e){
e.printStackTrace();
}
return sozcus;
}
返回值后,<description><![CDATA[Balyoz davasından yargılanan Emekli Amiral Semih Çetin, CNNTÜRK’te Ahmet Hakan’ın sunduğu Tarafsız Bölge programına konuk oldu. Çetin programda, 15 Temmuz darbe girişimiyle ilgili dikkat çeken bir iddiayı paylaştı.   “FETÖ’cülerin sözde darbe konseyi, ‘Yurtta Sulh’ta yer alan isimler açıklanmadan darbe girişimi bitti sayılmaz. İnsanlar ancak o zaman evine dönebilir” diyen Çetin, çarpıcı açıklamalar yaptı. Yurtta […]]]></description>
的完成块始终会调用。在这种情况下使用闭包很常见:
Alamofire.request
用法:
storeContact