Ios 如何解析这样的类型数组?
当我试着做的时候,我得到了下一个:Ios 如何解析这样的类型数组?,ios,arrays,swift,Ios,Arrays,Swift,当我试着做的时候,我得到了下一个: for item in serverResponse { print(item) } 它给了我: ("0", { "id" : 1, "name" : "Programming" }) ("1", { "id" : 2, "name" : "Music" }) 如何解析此数组以获取name?我把它弄糊涂了=/ 更新 全部答复如下: { "name": "ABC", "books": [ {
for item in serverResponse {
print(item)
}
它给了我:
("0", {
"id" : 1,
"name" : "Programming"
})
("1", {
"id" : 2,
"name" : "Music"
})
如何解析此数组以获取name
?我把它弄糊涂了=/
更新
全部答复如下:
{
"name": "ABC",
"books": [
{
"id": 1,
"name": "Programming"
}
{
"id": 2,
"name": "Music"
}
]
}
您希望将Json转换为一个对象来读取
name
。粗略的解决方案是解析名称。更好的方法是使用或。您希望将Json转换为对象以读取名称。粗略的解决方案是解析名称。更好的方法是使用或。如果您从服务器获得Json,您可以使用它:
func getJSON(urlToRequest: String) -> NSData{
return NSData(contentsOfURL: NSURL(string: urlToRequest)!)!
}
func parseJSON(inputData: NSData) -> NSArray{
let boardsDictionary = try! NSJSONSerialization.JSONObjectWithData(inputData, options: .AllowFragments) as! NSArray
return boardsDictionary
}
然后使用myData=parseJSON(json)
,您可以使用
let data = myData[0] as! NSDictionary
let name = data["name"]! as? String
如果您从服务器获取Json,您可以使用它:
func getJSON(urlToRequest: String) -> NSData{
return NSData(contentsOfURL: NSURL(string: urlToRequest)!)!
}
func parseJSON(inputData: NSData) -> NSArray{
let boardsDictionary = try! NSJSONSerialization.JSONObjectWithData(inputData, options: .AllowFragments) as! NSArray
return boardsDictionary
}
然后使用myData=parseJSON(json)
,您可以使用
let data = myData[0] as! NSDictionary
let name = data["name"]! as? String
服务器响应中项目的{
让itemArray=(项作为?NSDictionary)[“books”]作为?NSArray
对于(var i=0;i
用于服务器响应中的项目{
让itemArray=(项作为?NSDictionary)[“books”]作为?NSArray
对于(var i=0;i
我不喜欢用Swift处理字典。我发现对象的行为更好,更容易管理——它们也更安全
因此,我的建议是将您的响应解析为“Book”结构,然后您可以轻松访问这些结构的属性(id、name)
制作一个完成所有工作的类可能会更好
出于测试目的,我复制了您的回答如下:
let response: NSDictionary = ["name": "ABC", "books": [["id": 1, "name": "Programming"], ["id": 2, "name": "Music"]]]
现在,让我们首先制作图书结构
它将有两个属性,还有一个初始值设定项,它将解码位于响应“books”键数组中的每个字典的内容。初始值设定项可能失败,因为内容可能不可解码
struct Book {
let id: Int
let name: String
init?(_ object: AnyObject) {
if let dictionary = object as? NSDictionary,
dictId = dictionary["id"] as? Int,
dictName = dictionary["name"] as? String {
self.id = dictId
self.name = dictName
} else {
return nil
}
}
}
现在我们可以制作一个包含所有书籍的类。我们需要另一个初始值设定项,它将迭代内容并使用结构创建对象:
class BooksManager {
var books = [Book]()
init(response: NSDictionary) {
if let array = response["books"] as? NSArray {
self.books = array.flatMap { Book($0) }
}
}
}
好的,现在我们已经完成了样板代码的编写,我们可以使用我们的玩具了
创建类的实例:
let manager = BooksManager(response: response)
就这样!现在,该类保存对象,您可以轻松访问它们的属性
例如,使用循环:
for book in manager.books {
print("Book id: \(book.id), book name: \(book.name)")
}
结果:
书号:1,书名:编程
书号:2,书名:音乐
假设你想要第一本书的名字:
if let nameOfFirstBook = manager.books.first?.name {
print(nameOfFirstBook)
}
结果:
程序设计
最后一个示例,假设您希望收集数组中的所有图书名称:
let booksNames = manager.books.map { $0.name }
结果:
[“编程”、“音乐”]
我不喜欢用Swift处理字典。我发现对象的行为更好,更容易管理——它们也更安全
因此,我的建议是将您的响应解析为“Book”结构,然后您可以轻松访问这些结构的属性(id、name)
制作一个完成所有工作的类可能会更好
出于测试目的,我复制了您的回答如下:
let response: NSDictionary = ["name": "ABC", "books": [["id": 1, "name": "Programming"], ["id": 2, "name": "Music"]]]
现在,让我们首先制作图书结构
它将有两个属性,还有一个初始值设定项,它将解码位于响应“books”键数组中的每个字典的内容。初始值设定项可能失败,因为内容可能不可解码
struct Book {
let id: Int
let name: String
init?(_ object: AnyObject) {
if let dictionary = object as? NSDictionary,
dictId = dictionary["id"] as? Int,
dictName = dictionary["name"] as? String {
self.id = dictId
self.name = dictName
} else {
return nil
}
}
}
现在我们可以制作一个包含所有书籍的类。我们需要另一个初始值设定项,它将迭代内容并使用结构创建对象:
class BooksManager {
var books = [Book]()
init(response: NSDictionary) {
if let array = response["books"] as? NSArray {
self.books = array.flatMap { Book($0) }
}
}
}
好的,现在我们已经完成了样板代码的编写,我们可以使用我们的玩具了
创建类的实例:
let manager = BooksManager(response: response)
就这样!现在,该类保存对象,您可以轻松访问它们的属性
例如,使用循环:
for book in manager.books {
print("Book id: \(book.id), book name: \(book.name)")
}
结果:
书号:1,书名:编程
书号:2,书名:音乐
假设你想要第一本书的名字:
if let nameOfFirstBook = manager.books.first?.name {
print(nameOfFirstBook)
}
结果:
程序设计
最后一个示例,假设您希望收集数组中的所有图书名称:
let booksNames = manager.books.map { $0.name }
结果:
[“编程”、“音乐”]
问题不清楚。提供你们的回答,以及你们做了什么。问题不清楚。提供您的答复,以及您所做的工作。