我有代码:

///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/

10-10 09:02