【发布时间】:2018-06-11 17:24:50
【问题描述】:
有谁知道 iOS 版 TwitterKit 是否仍然只获取 140 个字符的推文而不是更新后的计数?我正在将文本放入具有动态属性的 UILabel 中,该属性应该自行调整大小,但我仍然收到截断的推文。
为了更好奇,我也使用下面的代码来获取 JSON:
public func fetchTweets(_ handler: @escaping ([Tweet]) -> Void) {
fetch { results in
var tweets = [Tweet]()
var tweetArray: NSArray?
if let dictionary = results as? NSDictionary {
if let tweets = dictionary[TwitterKey.tweets] as? NSArray {
tweetArray = tweets
} else if let tweet = Tweet(data: dictionary) {
tweets = [tweet]
}
} else if let array = results as? NSArray {
tweetArray = array
}
if tweetArray != nil {
for tweetData in tweetArray! {
if let tweet = Tweet(data: tweetData as? NSDictionary) {
tweets.append(tweet)
}
}
}
handler(tweets)
}
}
public func fetch(_ handler: @escaping (PropertyList?) -> Void) {
performTwitterRequest("GET", handler: handler)
}
func performTwitterRequest(_ method: String, handler: @escaping (PropertyList?) -> Void) {
Twitter.sharedInstance().sessionStore.session()?.userID {
let client = TWTRAPIClient()
let jsonExtension = (self.requestType.range(of: Constants.JSONExtension) == nil) ? Constants.JSONExtension : ""
let url = "\(Constants.twitterURLPrefix)\(self.requestType)\(jsonExtension)"
var clientError : NSError?
let request = client.urlRequest(withMethod: method, url: url, parameters: parameters, error: &clientError)
sendTwitterRequest(client: client, request: request, handler: handler)
}
func sendTwitterRequest(client: TWTRAPIClient, request: URLRequest, handler: @escaping (PropertyList?) -> Void) {
client.sendTwitterRequest(request) { (response, responseData, error) -> Void in
if let err = error {
print("Error: \(err.localizedDescription)")
}
var propertyListResponse: PropertyList?
if responseData != nil {
propertyListResponse = try? JSONSerialization.jsonObject(with: responseData!, options: .mutableLeaves)
if propertyListResponse == nil {
let error = "Couldn't parse JSON response."
self.log(error)
propertyListResponse = error
}
} else {
let error = "No response from Twitter."
self.log(error)
propertyListResponse = error
}
self.synchronize {
self.captureFollowonRequestInfo(propertyListResponse)
}
handler(propertyListResponse)
}
}
【问题讨论】: