我正在Swift中编写一个iOS应用程序,我正在使用NSXMLParser委托通过服务器端的Rest API从服务器解析XML数据。
我有以下数据结构:
<alarm>
<rootcause> some properties... </rootcause>
<symptoms>
<symptom> some properties... </symptom>
<symptom> some properties... </symptom>
</symptoms>
</alarm>
现在我正在将数据解析为NSmutableArray,其中包含每个警报的NSDictionary,其中包含每个RootCause的嵌套字典和NSMutableDictionary,症状包含每个症状的许多NSDictionary实例。
1. NSMutableArray: alarms
2. NSmutableDictionary: alarm
3.NSMutabbleDictionary: rootcause
3.NSMutableDictionary: symptoms
4.NSMutableDictionary: symptom1
4. NSMutableDictionary: symptom2
....
当然这是一个有点复杂的数据模型,所以我的问题是我应该创建包含其他嵌套类并构建我的数据模型的NSObject子类,或者我应该保留嵌套NSDictionaries的数据结构。
或者将来管理数据模型变更和更好调试等的最佳方法是什么
答案 0 :(得分:0)
转换它可以让您进行编译器验证,而且您不必乱用字符串键来获取数据。所以你应该制作模型课,是的。
示例可能如下所示:
struct Symptom {
let id : Int
let description : String
}
struct Cause {
let id : Int
}
struct Alarm {
let rootCause : Cause
let symptoms : [Symptom]
}
let alarms : [Alarm] = [Alarm(rootCause: Cause(id: 1), symptoms: [Symptom(id: 2, description: "some description")])]
答案 1 :(得分:0)
最好的方法是创建自己的数据结构,如下所示:
class symptom
{
let yourValue = ""
let someOtherValue = 0
}
class alarm
{
var rootcause = ""
var symptoms:[symptom] = []
//or if you have just a string
var symptoms:[String] = []
}
然后你所做的就是:
var alarms:[alarm] = []
for al in allAramsXML
{
let tmp = alarm()
for sym in al.symptoms
{
let tmpSym = symptom()
tmpSym.yourValue = ""
tmp.symptoms.append(tmpSym)
}
alarms.append(tmp)
}