Ios 循环NSArray并将对象添加到NSMutableArray
我一直在努力循环NSArray解析它,然后将它添加到NSMutableArray。问题不在于解析,我想在整个NSArray上循环 这是我的密码:Ios 循环NSArray并将对象添加到NSMutableArray,ios,swift,loops,Ios,Swift,Loops,我一直在努力循环NSArray解析它,然后将它添加到NSMutableArray。问题不在于解析,我想在整个NSArray上循环 这是我的密码: if let dictionarys : NSArray = dictionary.valueForKey("response") as? NSArray { var categoryNum = 0 var currency = "0" if let category: NS
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)
}
如果您尝试使用另一个数组初始化数组,请尝试以下操作
var nsmutablearrayVariableName = NSMutableArray.init(array: nsarrayVariableName)
如果您尝试使用另一个数组初始化数组,请尝试以下操作
var nsmutablearrayVariableName = NSMutableArray.init(array: nsarrayVariableName)
我已经获取了您的JSON示例,并制作了一个非常简单的示例,让您了解正确的Swift循环,这可能是您需要根据实际代码库和数据进行调整的地方 鉴于“词典”是NSA词典的一个集合:
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)")
}
}
}
我已经获取了您的JSON示例,并制作了一个非常简单的示例,让您了解正确的Swift循环,这可能是您需要根据实际代码库和数据进行调整的地方 鉴于“词典”是NSA词典的一个集合:
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)")
}
}
}
我将您的示例简化了一点,并添加了一些模拟类,以便在一个简单的操场上实现这一切:
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
}
}
<代码>导入基础
类服务对象{
变量类别ID:Int
var货币:字符串
init(categoryId:Int,currency:String){
self.categoryId=categoryId
self.currency=货币
}
}
类别项{
静态func addObject(项:ServicesObject){
打印(“添加的类别ID\(item.categoryID)、货币\(item.currency)”)
}
}
let字典:NSArray=[
[“答复”:
[“类别”:
[“类别”:“,
“类别ID”:66],
“货币”:“2”]],
[“答复”:
[“类别”:
[“类别”:“,
“类别ID”:67],
“货币”:“3”]],
[“答复”:
[“类别”:
[“类别”:“,
“类别ID”:68],
“货币”:“4”]]
如果让responses=dictionary.valueForKey(“response”)作为?安萨雷{
对于响应中的响应,其中响应为NSDictionary{//在所有响应上循环
变量类别=0
如果让category=response[“category”]as?NSDictionary{
categoryNums=类别[“categoryID”]作为?整数??0
}
var currency=响应[“currency”]为?字符串??“0”
让serviceObject=ServicesObject(categoryId:categoryNums,currency:currency)
CategoryItems.addObject(serviceObject)//添加所有响应
}
}
这里有一些更有趣的东西,比如,但希望它能作为一个例子。我把你的例子做得更快了一些,并添加了一些模拟类,让它在一个简单的操场上发挥作用:
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
}
}
<代码>导入基础
类服务对象{
变量类别ID:Int
var货币:字符串
init(categoryId:Int,currency:String){
self.categoryId=categoryId
self.currency=货币
}
}
类别项{
静态func addObject(项:ServicesObject){
打印(“添加的类别ID\(item.categoryID)、货币\(item.currency)”)
}
}
let字典:NSArray=[
[“答复”:
[“类别”:
[“类别”:“,
“类别ID”:66],
“货币”:“2”]],
[“答复”:
[“类别”:
[“类别”:“,
“类别ID”:67],
“货币”:“3”]],
[“答复”:
[“类别”:
[“类别”:“,
“类别ID”:68],
“货币”:“4”]]
如果让responses=dictionary.valueForKey(“response”)作为?安萨雷{
对于响应中的响应,其中响应为NSDictionary{//在所有响应上循环
变量类别=0
如果让category=response[“category”]as?NSDictionary{
categoryNums=类别[“categoryID”]作为?整数??0
}
var currency=响应[“currency”]为?字符串??“0”
让serviceObject=ServicesObject(categoryId:categoryNums,currency:currency)
CategoryItems.addObject(serviceObject)//添加所有响应
}
}
这里有一些更有趣的东西,比如,但希望它能作为一个例子。您说
字典:NSArray
,您可能想要一本字典。您是否在寻找foreach
?我得到的响应是NSArray,因为我使用单例类进行http调用,方法调用参数是nsdictionary,因此当我作为NSArray获得响应时,我将其放在nsdictionary中,只是为了将其发送给控制器委托。然后在那里解析它。所以它是一个NSArray,它只是一个名称。for(vari=0;iLook在,for数组{print(item)}中的项
您声明dictionarys:NSArray
,您可能需要一个字典。您是否在寻找foreach
?响应作为NSArray获取,并且由于我使用singleton类进行http调用,因此方法调用参数是nsdictionary,因此当我作为NSArray获取响应时,我将其放置在nsdictionary中,仅将其发送给r控制器委托。然后在那里解析它。所以它是一个NSArray,它只是一个名称。for(var i=0;在,for数组中的项{print(item)}
我没有要求初始化另一个数组,我想在NSArray值中循环,每次将对象添加到另一个NSMutableArray中。因此,这不是一个答案。此方法正是这样做的,通过初始化将每个值添加到另一个数组中。我没有要求初始化另一个数组,我想在NSArray值中循环,每次另一个NSMutableArray中的对象。因此这不是答案。此方法正是这样做的,通过初始化将每个值添加到另一个数组中。非常感谢,我将检查它!:)@Kenneth Bruno,以新的处理方式为我提供了新信息!感谢您的帮助:)非常感谢,我将检查它!:)@肯尼思·布鲁诺,给了我新的信息和新的处理方式!谢谢你的帮助:)