您需要調整這個爲您的特定型號,但這是我通常用於解析JSON的過程。
型號:
class Category : NSObject {
// Model Objects
var categoryId: NSNumber!
var categoryDesc: String!
var inAppId: String!
var categoryUnlocked: NSNumber!
override init() {
self.categoryId = 0
self.categoryDesc = ""
self.inAppId = ""
self.categoryUnlocked = 0
}
convenience init(categoryDictionary: [String : AnyObject]) {
self.init()
self.categoryId = NSNumber(int: categoryDictionary["CategoryID"]!.intValue)
self.categoryDesc = categoryDictionary["Category_Desc"] as? String ?? ""
self.inAppId = categoryDictionary["InAppID"] as? String ?? ""
self.categoryUnlocked = categoryDictionary["CategoryUnlocked"] as? NSNumber ?? 0
}
}
隨着我使用array.map功能的JSON:
var categoryList = [Category]()
if let catArray = data["categories"] as? NSArray {
categoryList = catArray.map({Category(categoryDictionary: $0 as! [String : AnyObject])})
CoreDataService.instance.saveCategories(categoryList)
}
這種方式是整齊和可讀性爲未來的開發者和具體型號內易於管理。