我有一个简单的 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 处的数组时,出现错误:
fatal error :数组索引超出范围
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 循环之前添加以下代码
twitterTweets = [TwitterTweet](count: data.count, repeatedValue: nil)
但这对我不起作用。非常感谢任何帮助或建议,因为我已经花了数小时试图找出解决方案。谢谢。
最佳答案
twitterTweets += [tweet]
或
twitterTweets.append(tweet)
或
twitterTweets.splice([tweet], atIndex: i)
关于arrays - fatal error - 在 for 循环中为数组赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30353777/