我的 JSON 文件没有出现在我的索引 SWIFT 中



这里我有一个新问题:我的应用程序正在编译,但不幸的是,我无法打开json文件中包含的文件。我的indexViewController文件没有显示它。

这是我的json文件的链接:https://drive.google.com/file/d/1qMKLNcf1fvYla21Yhh_D36FuPI-0-kj2/view?usp=drivesdk这是我的indexviewcontroller的代码:https://drive.google.com/file/d/169H5w6WvqAE43B4VceXqvSrHJXJUzE8Y/view?usp=sharing

请帮帮我,我还是Swift编程的初学者

class IndexViewController: UIViewController,  UITableViewDelegate, UITableViewDataSource, UISearchBarDelegate{

@IBOutlet weak var indexTableView: UITableView!
@IBOutlet weak var bookmarkButton: UIBarButtonItem!

// The BookViewModel init method decodes the json file and sets the chapters property on this instance
var book: BookViewModel = BookViewModel()
var chapters: [ChapterViewModel] = [ChapterViewModel]()
var managedObjectContext: NSManagedObjectContext!

var hasUserTappedOnBookmarkWidget: Bool = false

let searchController = UISearchController(searchResultsController: nil)
var filteredChapters: [ChapterViewModel] = [ChapterViewModel]()
var chapNumberAndSearchTextRangeList: [Int: [ChapterViewModel]] = [Int: [ChapterViewModel]]()
var searching = false
lazy var workItem = WorkItem()

private var userClickedChapter: ChapterViewModel?

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)

chapters = book.chapters
setNavBarLargeTitleProperty()

// This makes the table view row animate its selection state as it pops and pushes on the navigation stack.
if let selectedIndex = indexTableView.indexPathForSelectedRow {

let coordinator = self.transitionCoordinator
if coordinator != nil {
coordinator?.animate(alongsideTransition: { (context) in
self.indexTableView.deselectRow(at: selectedIndex, animated: true)
}, completion: { (context) in
if context.isCancelled {
self.indexTableView.selectRow(at: selectedIndex, animated: false, scrollPosition: .none)
} else {
self.indexTableView.deselectRow(at: selectedIndex, animated: true)
}
})
} else {
self.indexTableView.deselectRow(at: selectedIndex, animated: true)
}
}

// if the user has tapped on the widget, navigate to BookmarkViewController directly
if hasUserTappedOnBookmarkWidget {
performSegue(withIdentifier: "goToBookmarks", sender: self)
}
}

override func viewDidLoad() {
super.viewDidLoad()

// Set the datasource and delegate as self
indexTableView.dataSource = self
indexTableView.delegate = self

indexTableView.register(UINib(nibName: "IndexCell", bundle: nil), forCellReuseIdentifier: "customIndexCell")

您发布的JSON是无效的JSON,请尝试在一些在线linter中验证您的JSON,看看您的JSON格式是否正确。经过验证并进行了一些更改后,您的JSON应该是这样的。(由于您的JSON太大,它被上传到磁盘上,您无法直接在SO页面上检查预览:/(然后检查解码器,以确保您的对象被正确解码。从您发布的JSON中,您可以解码具有以下结构的Book对象:

struct Book {
let name: String?
let chapters: [Chapter]?
}
struct Chapter {
let number: Int?
let name, contents: String?
}

最新更新