具有嵌套 NSMutableDictionary 或嵌套子类的 NSMutableArray
NSMutableArray with nested NSMutableDictionary or nested Subclasses
我正在 Swift 中编写一个 iOS 应用程序,我正在通过服务器端的 Rest API 解析来自服务器的 XML 数据,使用NSXML解析器委托。
我有以下数据结构:
<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 的 Sub类 并构建我的数据模型,或者我应该保留我的嵌套 NSDictionaries 数据结构。
或者将来管理数据模型更改和更好调试等的最佳方法是什么
转换它可以为您提供编译器验证,您不必乱用字符串键来获取您的数据。所以你应该制作模型类,是的。
示例可能如下所示:
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")])]
最好的方法是创建自己的数据结构,如下所示:
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)
}
我正在 Swift 中编写一个 iOS 应用程序,我正在通过服务器端的 Rest API 解析来自服务器的 XML 数据,使用NSXML解析器委托。
我有以下数据结构:
<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 的 Sub类 并构建我的数据模型,或者我应该保留我的嵌套 NSDictionaries 数据结构。
或者将来管理数据模型更改和更好调试等的最佳方法是什么
转换它可以为您提供编译器验证,您不必乱用字符串键来获取您的数据。所以你应该制作模型类,是的。
示例可能如下所示:
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")])]
最好的方法是创建自己的数据结构,如下所示:
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)
}