gpt4 book ai didi

ios - 在闭包内部调用 Swift 闭包

转载 作者:IT王子 更新时间:2023-10-29 05:17:40 27 4
gpt4 key购买 nike

我有以下代码:

  twitterAPI?.verifyCredentialsWithUserSuccessBlock({ (userName, password) -> Void in


twitterAPI?.getUserTimelineWithScreenName(userName, count: 100, successBlock: { ([AnyObject]!) -> Void in



}, errorBlock: { (error :NSError!) -> Void in

})



}, errorBlock: { (error :NSError!) -> Void in

println("error block")
})

我收到以下错误:

enter image description here

我尝试在外部闭包内说 self,但没有用。我错过了什么?

更新:仍有构建错误:

enter image description here

更新:如果我将 getUserTimeline 方法放在闭包之外,它就可以工作。这个有效。

//        twitterAPI?.getUserTimelineWithScreenName("", successBlock: { (objects :[AnyObject]!) -> Void in
//
// }, errorBlock: { (error: NSError!) -> Void in
//
// })

但这不会:

twitterAPI?.verifyCredentialsWithUserSuccessBlock({ (userName, password) -> Void in


self.twitterAPI?.getUserTimelineWithScreenName("", successBlock: { (objects :[AnyObject]!) -> Void in

}, errorBlock: { (error: NSError!) -> Void in

})



}, errorBlock: { (error :NSError!) -> Void in


})

更新:getUserTimeLine 方法的定义

self.twitterAPI?.getUserTimelineWithScreenName(<#screenName: String!#>, successBlock: <#(([AnyObject]!) -> Void)!##([AnyObject]!) -> Void#>, errorBlock: <#((NSError!) -> Void)!##(NSError!) -> Void#>)

enter image description here

更新:现在,我收到一个构建错误,指出缺少参数 sinceID。我什至没有使用那个构造函数。

 if let twitterAPI = self.twitterAPI {

twitterAPI.verifyCredentialsWithUserSuccessBlock({ (userName, password) -> Void in

twitterAPI.getUserTimelineWithScreenName(userName, successBlock: { (objects :[AnyObject]!) -> Void in

}, errorBlock: { (error :NSError!) -> Void in

})


}, errorBlock: { (error :NSError!) -> Void in

})

}

最佳答案

尝试:

        twitterAPI?.verifyCredentialsWithUserSuccessBlock({ (userName, password) -> Void in
self.twitterAPI?.getUserTimelineWithScreenName(userName, successBlock: { (objects :[AnyObject]!) -> Void in

}, errorBlock: { (error :NSError!) -> Void in
})

return // <-- ADDED

}, errorBlock: { (error :NSError!) -> Void in
})

在这种情况下

{ (userName, password) -> Void in
self.twitterAPI?.getUserTimelineWithScreenName("", successBlock: { (objects :[AnyObject]!) -> Void in
}, errorBlock: { (error: NSError!) -> Void in
})
}

是一个隐式非 Void 返回的“单表达式闭包”。

从 Xcode 6.2/Swift 1.1 开始,您需要在此处显式 return

或者,使用已解决此问题的 Xcode 6.3/Swift 1.2。

看到这个问题:One-line closure without return typeSwift - 'Bool' is not a subtype of 'Void'?

关于ios - 在闭包内部调用 Swift 闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29500055/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com