Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios URLSession.shared.dataTask中JSON和字典的Swift 3编译器错误_Ios_Swift_Nsdictionary_Swift3 - Fatal编程技术网

Ios URLSession.shared.dataTask中JSON和字典的Swift 3编译器错误

Ios URLSession.shared.dataTask中JSON和字典的Swift 3编译器错误,ios,swift,nsdictionary,swift3,Ios,Swift,Nsdictionary,Swift3,在帮助下“解决”了此特定应用程序代码的以前问题后,此代码出现了一个新问题: var properties: [String] = [] var unsortedDetails: [String] = [] var contacts: [[String]] = [] var propertySorting: [(key: String, ind: String, link: Bool)] = [] var autolinks: [Bool] = [] 并且,在viewDidLoad函数中: le

在帮助下“解决”了此特定应用程序代码的以前问题后,此代码出现了一个新问题:

var properties: [String] = []
var unsortedDetails: [String] = []
var contacts: [[String]] = []
var propertySorting: [(key: String, ind: String, link: Bool)] = []
var autolinks: [Bool] = []
并且,在viewDidLoad函数中:

let contactsRequest = URLRequest(url: URL(string: "https://script.google.com/macros/s/AKfycbxOLElujQcy1-ZUer1KgEvK16gkTLUqYftApjNCM_IRTL3HSuDk/exec?id=" + ID + "&sheet=" + Industry.replacingOccurrences(of: " ", with: "+", options: NSString.CompareOptions.literal, range: nil))!)

        let contactsTask = URLSession.shared.dataTask(with: contactsRequest as URLRequest)
        {(data, response, error) in
            do {
                let jsonResult: Dictionary = try JSONSerialization.jsonObject(with: data!, options: []) as! [String : Any]

                let results = jsonResult[self.Industry] as! [[String : Any]]

                for key in results[0].keys {
                    self.propertySorting.append(key: (key as? String)!, ind: results[0].value(forKey: key as! String) as! String, link: results[1].value(forKey: key as! String) as! String != "X")
                }
                self.propertySorting.sort(by: {Int($0.ind) < Int($1.ind)})

                for property in self.propertySorting {
                    self.properties.append(property.key)
                    self.autolinks.append(property.link)
                }

                for contact in results {
                    self.contacts.append([])
                    for key in self.properties {
                        self.contacts[self.contacts.count-1].append(contact.value(forKey: key) as! String)
                    }
                }

                DispatchQueue.main.async(execute: {
                    let listController = self.viewControllers[0] as! ListController

                    listController.properties = self.properties
                    listController.contacts = self.contacts
                    listController.autolinks = self.autolinks

                    listController.tableView.reloadData()
                })

            } catch {
                print("FATAL ERROR")
            }
        }

        contactsTask.resume()
让contactsRequest=URLRequest(url:url(字符串):https://script.google.com/macros/s/AKfycbxOLElujQcy1-ZUer1KgEvK16gkTLUqYftApjNCM_IRTL3HSuDk/exec?id=“+ID+”&sheet=“+Industry.replacingOccurrences(of:”,with:“+”,选项:NSString.CompareOptions.literal,范围:nil))!)
让contactsTask=URLSession.shared.dataTask(其中:contactsRequest作为URLRequest)
{(数据、响应、错误)
做{
让jsonResult:Dictionary=try JSONSerialization.jsonObject(with:data!,options:[])作为![String:Any]
让results=jsonResult[self.Industry]作为![[String:Any]]
用于键入结果[0]。关键字{
self.propertySorting.append(key:(key as?String)!,ind:results[0]。value(forKey:key as!String)as!String,link:results[1]。value(forKey:key as!String)as!String!=“X”)
}
self.propertySorting.sort(按:{Int($0.ind)
现在遇到的问题是:
调用propertySorting.append(…)时,调用中的额外参数'ind',如果删除此(以前工作的)
ind
节,对于
link

而不是
NSArray
NSDictionary
使用的Swift native
Array
Dictionary
返回相同的错误,并使用
keys
Dictionary
获取所有键的数组

let jsonResult: Dictionary = try JSONSerialization.jsonObject(with: data!, options: []) as! [String : Any]
let results = jsonResult[self.Industry] as! [[String : Any]]

for key in results[0].keys {

}

注意:不需要对Swift原生类型对象使用
.mutableContainers
选项。

而不是
NSArray
NSDictionary
使用Swift原生
数组和
字典
并使用
键和
字典
获取所有键的数组

let jsonResult: Dictionary = try JSONSerialization.jsonObject(with: data!, options: []) as! [String : Any]
let results = jsonResult[self.Industry] as! [[String : Any]]

for key in results[0].keys {

}

注意:无需将
.mutableContainers
选项与Swift本机类型对象一起使用。

jsonResult而不是Result,您获得了所有密钥原因是结果[0]您现在访问的不是NSDictionary类型。让我们这样定义
Let result0:NSDictionary=results[0]语法可能不正确,请将其更改为approvariate.jsonResult而不是Result,这样您就得到了所有密钥。原因是您现在访问的结果[0]不是NSDictionary的类型。让我们这样定义
Let result0:NSDictionary=results[0]语法可能不正确,请适当更改。这无疑会清理代码的外观,并且更有意义-但是它引入了两个新问题(同时似乎删除了其他问题):引入的第一个问题是,它声称我在这一行中输入了一个额外的值:
self.propertySorting.append(key:(key as?String)!,ind:results[0]。value(forKey:key-as!String)as!String,link:results[1]。value(forKey:key-as!String)as!String!=“X”)
尽管:
var属性排序:[(key:String,ind:String,link:Bool)]
(之前工作正常)它还声称
contact
没有值
value
对不起,我所说的“额外价值”是指它声称
propertySorting
中没有值
ind
,如果我删除了该行中的该部分(尽管它是正确的),然后,它为
链接
@OscarCooke Abbott声明了相同的内容,您需要向我显示
属性排序的类型
,并显示此自定义方法,更具体地说,对于
联系人
没有值
,它说'Value of type'Dictionary'没有成员'Value'。你需要用这个新代码和错误编辑你的问题。这肯定会清理代码的外观,并且更有意义-但是它引入了两个新问题(同时似乎删除了其他问题):引入的第一个问题是,它声称我在此行中输入了一个额外的值:
self.propertySorting.append(key:(key as?String)!,ind:results[0]。value(forKey:key as!String)as!String,link:results[1]。value(forKey:key as!String)as!String!=“X”)
尽管:
var-propertySorting:[(key:String,ind:String,link:Bool)]=[]
(之前工作正常)它还声称
contact
没有值
value
对不起,“额外值”是指它声称
propertySorting
中没有值
ind
,如果我删除了该部分(尽管它是正确的)在这一行中,它接着为
link
@OscarCooke-Abbott声明了同样的内容,因为您需要向我显示
属性排序的类型
,并且还显示此自定义方法。更具体地说,对于
联系人
没有值
,它说'value of type'Dictionary'没有成员'value',您需要编辑y我们的问题与这个新的代码和错误。