我有这个错误。无法调用' jsonObject'使用类型'的参数列表(带:字符串,选项:[Any])' 我认为它必须是文件的不同类型,但不确定。 我不认为做bundle.main.url是正确的方法。我在另一个建议使用url的问题中看到过,但也不确定它是如何工作的。任何帮助将不胜感激,谢谢。
这是在InfoViewController中写入文件的代码
let fileName: String?
let file: FileHandle? = FileHandle(forWritingAtPath: "fileName.json")
if file != nil {
// Set the data we want to write
do{
if let jsonData = try JSONSerialization.data(withJSONObject: fileName!, options: .init(rawValue: 0))
{
// Check if everything went well
//print(NSString(data: jsonData, encoding: 1)!)
let bookCover = (jsonData as AnyObject).value(forKeyPath: "bookCoverImage.image") as? [UIImage]
let bookTitle = (jsonData as AnyObject).value(forKeyPath: "bookTitleLabel.text") as? [String]
let author = (jsonData as AnyObject).value(forKeyPath: "authorLabel.text") as? [String]
let year = (jsonData as AnyObject).value(forKeyPath: "bookYear.text") as? [String]
let pages = (jsonData as AnyObject).value(forKeyPath: "numberOfPages") as? [String]
let ratingStars = (jsonData as AnyObject).value(forKeyPath: "ratingStars.image") as? [UIImage]
let reviews = (jsonData as AnyObject).value(forKeyPath: "totalReviews.text") as? [String]
let description = (jsonData as AnyObject).value(forKeyPath: "descriptionLabel.text") as? [String]
file?.write(jsonData)
// Do something cool with the new JSON data
}
}
catch {
}
// Write it to the file
// Close the file
file?.closeFile()
}
这是发生错误的代码。在favoritesListController中。
var path: String?
var favoritesList: String?
var bookCoversDisplay = [UIImage]()
var titlesDisplay = [String]()
var authorsDisplay = [String]()
var yearDisplay = [String]()
var pagesDisplay = [String]()
var starRatingDisplay = [UIImage]()
var reviewsDisplay = [String]()
var descriptionsDisplay = [String]()
var bookCovers: UIImage!
var titles: String = ""
var authors: String = ""
var year: String = ""
var pages: String = ""
var starRating: UIImage!
var reviews: String = ""
var descriptions: String = ""
override func viewDidLoad() {
super.viewDidLoad()
path = Bundle.main.path(forResource: "favoritesList", ofType: "json")
do {
favoritesList = try String(contentsOfFile: path!)
let jsonResult = try? JSONSerialization.jsonObject(with: favoritesList, options: [])
if let array = jsonResult as? [Any] {
if let bookCover = array.first {
bookCoversDisplay = bookCover
} else if let title = array.second {
titlesDisplay = title
} else if let author = array.third {
authorsDisplay = author
} else if let year = array.fourth {
yearDisplay = year
} else if let pages = array.fifth {
pagesDisplay = pages
} else if let starRating = array.sixth {
starRatingDisplay = starRating
} else if let reviews = array.seventh {
reviewsDisplay = reviews
} else if let description = array.eighth {
descriptionsDisplay = description
}
}
答案 0 :(得分:0)
也许可以帮到你:
do{
let data = try Data.init(contentsOf: URL.init(fileURLWithPath: Bundle.main.path(forResource: "Info", ofType: "json")!))
let json = try JSONSerialization.jsonObject(with: data, options: .allowFragments)
print(json)
}catch{
print(error)
}