[英]Loop in NSArray and add Object to NSMutableArray
我一直在尝试在NSArray中循环解析,然后将其添加到NSMutableArray。 问题不在于解析,我想遍历整个NSArray。
这是我的代码:
if let dictionarys : NSArray = dictionary.valueForKey("response") as? NSArray {
var categoryNum = 0
var currency = "0"
if let category: NSArray = dictionarys.valueForKey("category") as? NSArray {
if let catId = category.valueForKey("categoryID") as? NSArray {
categoryNum = catId[0] as! Int
}
}
if let currency1: NSArray = dictionarys.valueForKey("currency") as? NSArray {
if let currency2 = currency1[0] as? String {
currency = currency2
}
}
serviceObject = ServicesObject(categoryId: categoryNum,currency: currency)
CategoryItems.addObject(serviceObject)
}
self.tableView.reloadData()
我想做这样的事情:
for (var i = 0;i<dictionarys.count ; i++){
var categoryNum = 0
var currency = "0"
if let category: NSArray = dictionarys.valueForKey("category") as? NSArray {
if let catId = category.valueForKey("categoryID") as? NSArray {
categoryNum = catId[0] as! Int
}
}
if let currency1: NSArray = dictionarys.valueForKey("currency") as? NSArray {
if let currency2 = currency1[0] as? String {
currency = currency2
}
}
serviceObject = ServicesObject(categoryId: categoryNum,currency: currency)
CategoryItems.addObject(serviceObject)
}
我正在尝试解析的样本: print(dictionarys)
(
{
category = {
category = "<null>";
categoryID = 66;
};
currency = 2;
},{
category = {
category = "<null>";
categoryID = 66;
};
currency = 2;
},{
category = {
category = "<null>";
categoryID = 66;
};
currency = 2;
}
)
我已经采用了JSON示例,并为您提供了一个非常简单的示例,以使您了解适当的Swift循环,这可能是您需要适应实际代码库和数据的条件。
鉴于“字典”是NSDictionaries的NSArray:
for dict in dictionarys {
if let curr = dict["currency"] as? Int {
print("Currency: \(curr)")
}
if let category = dict["category"] as? NSDictionary {
if let ID = category["categoryID"] as? Int {
print("ID: \(ID)")
}
}
}
我为您的示例提供了更多的Swifty功能,并添加了一些模拟类,以使其在一个简单的Playground中可以正常工作:
import Foundation
class ServicesObject {
var categoryId: Int
var currency: String
init(categoryId: Int, currency: String) {
self.categoryId = categoryId
self.currency = currency
}
}
class CategoryItems {
static func addObject(item: ServicesObject) {
print("Added categoryID \(item.categoryId), currency \(item.currency)")
}
}
let dictionary: NSArray = [
["response":
["category":
["category":"<null>",
"categoryID":66],
"currency": "2"]],
["response":
["category":
["category":"<null>",
"categoryID":67],
"currency": "3"]],
["response":
["category":
["category":"<null>",
"categoryID":68],
"currency": "4"]]]
if let responses = dictionary.valueForKey("response") as? NSArray {
for response in responses where response is NSDictionary { // loop over all responses
var categoryNums = 0
if let category = response["category"] as? NSDictionary {
categoryNums = category["categoryID"] as? Int ?? 0
}
var currency = response["currency"] as? String ?? "0"
let serviceObject = ServicesObject(categoryId: categoryNums, currency: currency)
CategoryItems.addObject(serviceObject) // add all responses
}
}
那里有一些更高级的东西,例如nil合并运算符( ??
),但希望它可以作为示例。
您可以尝试使用另一个数组初始化该数组。
var nsmutablearrayVariableName = NSMutableArray.init(array: nsarrayVariableName)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.