2015-01-01 30 views
0

我有以下功能:prepare()其中返回NSMUtableArray。当我尝试,返回一个jsonNSMutableArray对象,我得到以下错误:iOS中的函数返回错误

'NSMutableArray' is not convertible to 'Void' 

功能的源代码:

func prepare() -> NSMutableArray { 

    let statusesShowEndpoint = "https://api.twitter.com/1.1/statuses/user_timeline.json" 
    let params = ["screen_name": "tikaDotMe"] 
    var clientError : NSError? 

    let request = Twitter.sharedInstance().APIClient.URLRequestWithMethod(
     "GET", URL: statusesShowEndpoint, parameters: params, 
     error: &clientError) 

    if request != nil { 
     Twitter.sharedInstance().APIClient.sendTwitterRequest(request) { 
      (response, data, connectionError) -> Void in 
      if (connectionError == nil) { 
       var jsonError : NSError? 


       let json = NSJSONSerialization.JSONObjectWithData(data, 
        options: nil, 
        error: &jsonError) as NSMutableArray 
      //Error: 'NSMutableArray' is not convertible to 'Void' 
       return json 



      } 
      else { 
       println("Error: \(connectionError)") 
      } 
     } 
    } 
    else { 
     println("Error: \(clientError)") 
    } 
    return [""] 
} 
+0

您正在使用哪种版本的XCode? – user3581203

+0

@ user3581203版本6.1.1(6A2008a) – tika

回答

2

的问题是,你正试图从一个封闭返回JSON它被定义为返回一个空:

(response, data, connectionError) -> Void 

编辑:由于@ Paulw11提到,你需要处理在封闭的数据,你不能从你的PR寄回epare功能。

+0

这将不起作用,因为闭包将被异步执行,所以prepare的返回值将无效。 OP需要调用适当的方法来处理闭包内的JSON。 – Paulw11

+0

@ Paulw11是否有可能使async:false? – tika

+0

最好编写代码以便正确处理异步cals。事件驱动的编程是应用程序开发中的一个重要范例。 – Paulw11