最近我正在处理 JSON ,每天我遇到新问题,虽然我喜欢它,因为我每天都在学习。 StackOverflow伙伴正在帮助我,谢谢你。
我的应用运行正常,直到我在某些 JSON 返回时发现 nil 。这是我的 JSON 返回
{
"main_content" : [
{
"author" : "maruf khandakar",
"post_id" : 110,
"post_date" : "October 3, 2016",
"title" : "hjhjhjhjkljkhasfreiwutb cltjutjuregjre nb",
"show_comment_number" : "0",
"show_likes" : "0",
"post_img" : [
{
"guid" : "http:\/\/xxx\/wp-content\/uploads\/2016\/10\/IMG_1475492476.jpg"
}
],
"author_img" : "http:\/\/xxx\/wp-content\/uploads\/2016\/10\/Screenshot_1-2.png",
"post_time" : "11:01 am",
"blog_text" : "sfdhjusolidasfjgfkdsjfdklshfj"
},
{
"author" : "maruf khandakar",
"post_id" : 149,
"post_date" : "November 17, 2016",
"title" : "Test",
"show_comment_number" : "0",
"show_likes" : "0",
"post_img" : [
],
"author_img" : "http:\/\/xxx\/wp-content\/uploads\/2016\/10\/Screenshot_1-2.png",
"post_time" : "4:03 am",
"blog_text" : "Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip"
}
]
}
在 JSON 的第二大块中,您可以看到** post_img **中没有 guid 。因此,每当我的数组迭代时,它都会崩溃。这是我之前声明的模型类
import Foundation
import SwiftyJSON
class HomeFeedJSON {
var title: String?
var author_img: URL?
var author: String?
var blog_text: String?
var post_img: URL?
var likesNumber: Int?
var commentNumber:Int?
init(items: JSON){
self.author = items["author"].stringValue
self.author_img = items["author_img"].URL
self.title = items["title"].stringValue
self.blog_text = items["blog_text"].stringValue
let post_imgAA = items["post_img"].array
for itemsIMG in post_imgAA! {
self.post_img = itemsIMG["guid"].URL
}
self.likesNumber = items["show_likes"].intValue
self.commentNumber = items["show_comment_number"].intValue
}
}
后来我试着像这样做一些过滤
class HomeFeedJSON {
var title: String?
var author_img: URL?
var author: String?
var blog_text: String?
var post_img: URL?
var likesNumber: Int?
var commentNumber:Int?
init(items: JSON){
//self.author = items["author"].stringValue
if let userUrl = items["author"].string {
self.author = userUrl
}
if let authorImgUrl = items["author_img"].URL {
self.author_img = authorImgUrl
}
if let titleUrl = items["title"].string {
self.title = titleUrl
}
if let blogTextURL = items["blog_text"].string {
self.blog_text = blogTextURL
}
if let post_imgAA = items["post_img"].array {
for itemsIMG in post_imgAA {
if let postUrl = itemsIMG["guid"].URL {
self.post_img = postUrl
} else {
let myURL = "www.thewoodjoynt.com/Content/Images/Products/NoImageAvailable.jpg"
let noImage: URL = URL(string: myURL)!
self.post_img = noImage
}
}
}
self.likesNumber = items["show_likes"].intValue
self.commentNumber = items["show_comment_number"].intValue
}
}
仍然崩溃,因为我确信我的过滤效果还不够好。请给我一些建议,如何过滤这些 JSON 返回。先感谢您。
答案 0 :(得分:0)
解决了这个问题
class HomeFeedJSON {
var _title: String?
var _author_img: URL?
var _author: String?
var _blog_text: String?
var _post_img: URL?
var _likesNumber: Int?
var _commentNumber:Int?
init(items: JSON){
self._author = items["author"].stringValue
self._author_img = items["author_img"].URL
self._title = items["title"].stringValue
self._blog_text = items["blog_text"].stringValue
let post_imgAA = items["post_img"].array
for itemsIMG in post_imgAA! {
self._post_img = itemsIMG["guid"].URL
}
self._likesNumber = items["show_likes"].intValue
self._commentNumber = items["show_comment_number"].intValue
}
var title: String {
if _title == nil {
_title = ""
}
return _title!
}
var author_img: URL {
if _author_img == nil {
let myURL = "http://thewoodjoynt.com/Content/Images/Products/NoImageAvailable.jpg"
let noImage: URL = URL(string: myURL)!
_author_img = noImage
}
return _author_img!
}
var author: String {
if _author == nil {
_author = ""
}
return _author!
}
var blog_text: String {
if _blog_text == nil {
_blog_text = ""
}
return _blog_text!
}
var post_img: URL {
if _post_img == nil {
let myURL = "http://thewoodjoynt.com/Content/Images/Products/NoImageAvailable.jpg"
let noImage: URL = URL(string: myURL)!
_post_img = noImage
}
return _post_img!
}
var likesNumber: Int {
if _likesNumber == nil {
_likesNumber = 0
}
return _likesNumber!
}
var commentNumber: Int {
if _commentNumber == nil {
_commentNumber = 0
}
return _commentNumber!
}
}