【发布时间】:2016-08-09 20:17:26
【问题描述】:
我是一名学生,希望我使用的是正确的术语。
我需要使用“描述”键来填充 Label.text。我能够拉“结果”,但没有别的 我能够做到这一点,但是当我开始使用 AVFoundation 时出现下标错误
do {
let json = try NSJSONSerialization.JSONObjectWithData(data, options: .MutableLeaves)
let a1 = json["results"] as? [[String: AnyObject]]
let a2 = a1![0]
let a3 = a2["lexicalEntries"]
let d1 = a3![0] as? [String: AnyObject]
let d2 = d1!["entries"] as? [[String: AnyObject]]
let a4 = d2![0]
let d3 = a4["senses"] as? [[String: AnyObject]]
let a5 = d3![0]
let d4 = a5["definitions"] as? [String]
let a6 = d4![0]
dispatch_async(dispatch_get_main_queue(), {
//self.wordLabel.text = a6 as String
self.hintLabel.text = a6 as String
})
print(a6)
} catch {
print("error serializing JSON: \(error)")
if wordLabel.text != "" && wordLabel.text != nil {
self.wordLabel.text = "No hints for you!"
}
}
[原始 - 这有效并且正在拉“定义”键][1]
所以,我尝试了利用 do/try 方法的安全代码,但我只是在提取“结果”。我在深入了解定义时遇到问题。此快照缺少同步,但我已将其省略。
func parseTest(data: NSData) {
do {
//let json = try NSJSONSerialization.JSONObjectWithData(data, options: .MutableContainers)
//Not working
let json: NSDictionary = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers) as! NSDictionary
if let results = json["results"] as? [[String: AnyObject]] {
print(" ResultsBegin \(results) ResultsEnd ")
/*for result in results*/
//if let mainDict = (json.objectForKey("results") as? NSArray?)! {
// print("mainDict \(mainDict) mainDict")
if let lexEntry = (json.objectForKey("lexicalEntries") as? NSArray?)! {
print("lexEntry \(lexEntry) lexEntry")
if let entry = (json.objectForKey("entries") as? NSArray?)!{
print("entriesArray \(entry) entriesArray")
if let sense = (json.objectForKey("senses") as? NSArray?)! {
print("senseArray \(sense) senseArray")
if let definition = (json.objectForKey("definitions") as? NSArray?)! {
print("defArray \(definition) defArray")
}
}
}
}
dispatch_async(dispatch_get_main_queue(), {
//self.wordLabel.text = a6 as String
self.hintLabel.text = "Made it to Parse Test Function above catch"
print("Made it to Parse Test Function above catch")
})
}
} catch {
print("error serializing JSON: \(error)")
}
//print(" Parse Test \(def)")
}
func parse(data: NSData) {
print("Made it to Regular Parse Function")
[不拉“定义”键][2]
字典如下
results = (
{
id = angular;
language = en;
lexicalEntries = (
{
entries = (
{
etymologies = (
"late Middle English (as an astrological term): from Latin angularis, from angulus angle"
);
senses = (
{
definitions = (
"having angles or sharp corners"
);
【问题讨论】:
-
感谢您的帮助,希望我的问题不会太混乱。
-
您的“字典如下”不完整,很难重建原始数据。显示 JSON 的文本表示将帮助读者解决您的问题。 (当然应该减少结果的数量……)
标签: json swift nsarray nsdictionary