Re: [問題] plist與NSDictionary + 多層讀取
不好意思,現在才看到您更新問題,希望不會太遲。
※ 引述《yueyajbdt (碳烤焦貓)》之銘言:
: 我有plist內容如下
: Key Type Value
: item 0 (Dict)
: Year (String) 2011
: Faculty (Array)
: item 0 (String) 商學院
: item 1 (String) 理工學院
: item ....
: 商學院 (Array)
: item 0 (Dict)
: 單修 (Array)
: item 0 (String) 科目1
: item 1 (String) 科目2
: 雙修 (Array)
: item 0 (String) 科目3
: item 1 (String) 科目1
: item 2 (String) 科目4
: item .....
: 我的想法很單純,設了一個年的Key代表當年,由這個Key去找當年有的學院
: 所以又設了一個Faculty代表所有學院的Key,然後又想把每一個學院都設成一個Key
: 來記錄該學院底下所有可選的科目
: 但問題來了,科目有名字相同但其實是不同的兩種科目(單、雙修)
: 所以我就想在學院裡面又多了代表單雙修Key,卻發覺不知道怎麼去讀取
: Item 0 Level 0
: Year/Faculty/商學院 Level 1
: 單/雙修 Level 2
: 在objectAtIndex:0的情況下可以找到Level 0底下的Key (Level 1)
: 那要怎麼樣才能去找Level 1底下的Key (單/雙修 Level 2)呢?
我個人的理解是在plist中不同的資料型別,皆對應到一種Objective-C class
例如:
Dict <-> NSDictionary
Array <-> NSArray
String <-> NSString
...
所以看您想抓取哪一層的資料,就看上一層的容器型別是哪種(Dict or Array)
再呼叫對應的函示即可,若是還很抽象的話,舉一個例子看看有沒有幫助
例如您已經得到item0,其型別為NSDictionary
那麼如果您希望取得Faculty,那麼寫法會是:
NSArray* facultyArray = (NSArray*)[item0 objectForKey:@"Faculty"];
如果您希望取得商學院的資料:
NSArray* business = (NSArray*)[item0 objectForKey:@"商學院"];
商學院第一個item:
NSDictionary* businessItem = (NSDictionary*)[objectAtIndex:0];
取得單修的資料:
NSArray* 單修 = (NSArray*)[businessItem objectForKey:@"單修"];
就是這樣一直往下。
所以重點在於瞭解plist中的Type與Objective-C的容器相對的關係
希望對您有幫助
: ----舊問題----
舊問題恕刪
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.249.169.39
推
08/15 21:01, , 1F
08/15 21:01, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
MacDev 近期熱門文章
PTT數位生活區 即時熱門文章