从 swift 中的静态内容动态生成 nsarry

dynamically making nsarry from the static content in swift

我必须使用以下代码制作 NSArray Objective C

self.sampleData = @[ @{ @"description": @"Section A",
                      @"articles": @[ @{ @"title": @"Article A1" },
                                      @{ @"title": @"Article A2" },
                                      @{ @"title": @"Article A3" },
                                      @{ @"title": @"Article A4" },
                                      @{ @"title": @"Article A5" }
                                      ]
                      } ];

我怎么能在 swift 中编写相同的代码,在循环中说太动态了,我想初始化文章 A1、文章 A2 字符串,如 5 个元素将有文章 5。

我不知道你的 Swift 知识,但这里有一种程序化数组的方法:

// in Swift you are using the type Array instead of NSArray
var sampleData = [[String : AnyObject]]() // empty Array of dictionaries
sampleData["description"] = "Section A"

var articles = [[String : String]]() // empty Array of dictionaries

// is the same as   for var i = 1; i <= 5; i++ {
for i in 1...5 {
    let article = [String : String]()
    article["title"] = "Article A\(i)" // using String interpolation
    articles.append(dict)
}

// add articles to sampleData
sampleData["articles"] = articles

由于 Swift 的功能方法 map 您还可以将其重写为:

var sampleData = [[String : AnyObject]]() // empty Array of dictionaries
sampleData["description"] = "Section A"

let articles = (1...5).map{ Dictionary(dictionaryLiteral: ("title", "Article A\([=11=])")) }

// add articles to sampleData
sampleData["articles"] = articles

作为一般建议,如果你想使用这样的数据结构作为存储,你应该考虑制作新的结构或 类 像 SectionArticle 来检查更静态的编译器一.