我有代码:
///Get the timeline of the logged in user.
static func GetTimeline(_count: Int) -> [JSONValue]
{
var tweets : [JSONValue] = []
var count = _count
account.getStatusesHomeTimelineWithCount(_count, sinceID: nil, maxID: nil, trimUser: true, contributorDetails: false, includeEntities: true,
success: { (statuses) -> Void in
tweets = statuses!
}, nil)
return tweets
}
并尝试在此处复制值:
tweets = statuses!
每次此方法(
GetTimeline
)返回一个空数组。通过调试和断点,我知道statuses
包含值,但是由于某些原因,该行tweets = statuses!
无法正常工作,因此tweets
仍为空数组。任何想法出什么事了吗?
最佳答案
我想getStatusesHomeTimelineWithCount
是非阻塞调用,并且success
回调已经在GetTimeline
返回空数组之后执行。
对于非阻塞调用,您不能使用返回值,但可以使用例如竞争处理程序。
static func GetTimeline(_count: Int, competition: (tweets: [JSONValue]) -> ())
{
var tweets : [JSONValue] = []
var count = _count
account.getStatusesHomeTimelineWithCount(_count, sinceID: nil, maxID: nil, trimUser: true, contributorDetails: false, includeEntities: true,
success: { (statuses) -> Void in
competition(tweets: statuses!)
}, nil)
}
这是您可能使用当前示例的方式:
let tweets = SomeObject.GetTimeline(10)
// do something with tweets
完成后,您可以执行以下操作:
SomeObject.GetTimeline(10, { (tweets) in
// do something with tweets
})
关于ios - 值未复制,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26521563/