致命错误 - 在for循环中为数组赋值

时间:2015-05-20 15:14:45

标签: arrays swift

我有一个简单的 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)

但这对我不起作用。非常感谢任何帮助或建议,因为我已经花了几个小时试图找出解决方案。感谢。

1 个答案:

答案 0 :(得分:2)

twitterTweets += [tweet]

twitterTweets.append(tweet)

twitterTweets.splice([tweet], atIndex: i)