我有一个简单的 TwitterTweet 结构:
struct TwitterTweet {
let userName: String
let userDescription: String
let userFollowersCount: Int
let userProfileImage: String
let tweetText: String
let tweetRetweetCount: Int
let tweetFavouriteCount: Int
}
和TwitterTweet结构的数组:
//var twitterTweets: [TwitterTweet]?
var twitterTweets = [TwitterTweet]()
我将JSON数据检索并解析为NSDictionary数组。 在for循环中,我创建了一个新的TwitterTweet,但是当我尝试将它添加到索引i的数组时,我得到错误:
致命错误:数组索引超出范围
if let data = NSJSONSerialization.JSONObjectWithData(responseData, options: nil, error: &err) as? [NSDictionary] {
if data.count != 0 {
for var i = 0; i < data.count; i++ {
if let
tt = data[i]["text"] as? String,
rc = data[i]["retweet_count"] as? Int,
tc = data[i]["favorite_count"] as? Int {
if let ud = data[i]["user"] as? NSDictionary {
if let
un = ud["name"] as? String,
dc = ud["description"] as? String,
fc = ud["followers_count"] as? Int,
pi = ud["profile_image_url"] as? String {
let tweet = TwitterTweet(userName: un, userDescription: dc, userFollowersCount: fc, userProfileImage: pi, tweetText: tt, tweetRetweetCount: rc, tweetFavoriteCount: tc
self.twitterTweets[i] = tweet
}
}
}
}
}
else {
println("no data")
println("error: \(error)")
}
我不确定如何分配大小为 data.count 的数组。 我尝试在for-loop
之前添加以下代码twitterTweets = [TwitterTweet](count: data.count, repeatedValue: nil)
但这对我不起作用。非常感谢任何帮助或建议,因为我已经花了几个小时试图找出解决方案。感谢。
答案 0 :(得分:2)
twitterTweets += [tweet]
或
twitterTweets.append(tweet)
或
twitterTweets.splice([tweet], atIndex: i)