簡體   English   中英

Swift-處理字典詞典的最佳方法?

[英]Swift - best way to handle a dictionary of dictionaries?

我有很多人都有最喜歡的書的清單。 每本書都有幾個屬性,例如書名,書說明,書作者。

我要做的是創建詞典字典,以便能夠訪問特定的人,然后訪問該人的每本書,並從中提取書名,書名作者等。

目前我正在做的是像這樣聲明一個字典:

var dictToHoldBooKValue = [String : [String : AnyObject]]()

第一個String是鍵,我將創建該鍵作為人的名字,第二個pard是字典,它將具有string類型的鍵(我將其設置為書籍屬性名稱,例如“ book Title”或“本書作者”,而任何對象都是該鍵的值。

例子:我這樣修改字典:

dictToHoldBooKValue["Mark"] = ["book Title" : (bookTitle as? String)]

但是,這種方法似乎不起作用,因為“ Mark”有他喜歡的幾本書,因此當我打印字典數時,它只顯示一本。 另外,我也不知道如何使用這個dict來獲得書作者屬性或任何其他屬性。

有人知道更優雅的解決方案嗎?

謝謝!

制作一個代表書的結構。 使它包含您要跟蹤的所有書籍屬性。

struct Book {
    var title: String
    var author: String
    var year: Int
}

您的外部詞典將與您所描述的完全相同。

您的內部字典將其鍵作為書的名稱,並將包含Book結構。

var dictToHoldBooKValue = [String : [String : Book]]()
dictToHoldBooKValue["Mark"] = [
    "You Only Live Twice" : Book("You Only Live Twice", "Ian Flemming", 1961),
    "Casino Royale" : Book("Casino Royale", "Ian Flemming", 1959)
]

像這樣訪問它:

print(dictToHoldBooKValue["Mark"]["You Only Live Twice"].author)

如果您要從某個地方加載此數據並希望以特定方式顯示它,那么就很好。 如果需要以更靈活的方式查詢數據,則應考慮使用CoreData。

如果要使用鍵值編碼,則可以使用類型別名來簡化代碼:

typealias Book = [String: AnyObject]
typealias Books = [Book]
typealias Person = [String: AnyObject]

var people = [Person]()

var mark = Person()
var marksBooks = Books()
var theLittlePrince = [
  "title" : "The Little Prince",
  "author": "Antoine de Saint-Exupéry"
]
marksBooks.append(theLittlePrince)
mark["books"] = marksBooks
people.append(mark)


print(people)

印刷品:

[["books": (
        {
        author = "Antoine de Saint-Exup\U00e9ry";
        title = "The Little Prince";
    }
)]]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM