Swift:使用未解析的标识符“json”
Posted
技术标签:
【中文标题】Swift:使用未解析的标识符“json”【英文标题】:Swift : Use of unresolved identifier 'json' 【发布时间】:2015-10-21 07:27:17 【问题描述】:我目前正在使用 Swift 2.0 和 Xcode 7.0.1 开发我的第一个 ios 应用程序。
我遇到了一个似乎无法修复的奇怪小错误:
var err: NSError?
原代码:
//var json = NSJSONSerialization.JSONObjectWithData(data, options: .MutableContainers, error: &err) as? NSDictionary
Swift2 重写代码:
do
if let json = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? NSDictionary
print(json)
catch
print(error)
重写前使用未解析的标识符“json”
if let parseJSON = json
var resultValue = parseJSON["status"] as? String
print("result: \(resultValue)")
var isUserRegistered:Bool = false;
if(resultValue=="Success") isUserRegistered = true;
var messageToDisplay:String = parseJSON["message"] as! String!;
if(!isUserRegistered)
messageToDisplay = parseJSON["message"] as! String!;
dispatch_async(dispatch_get_main_queue(),
//Display alert message with confirmation.
var myAlert = UIAlertController(title:"Alert", message:messageToDisplay, preferredStyle: UIAlertControllerStyle.Alert);
let okAction = UIAlertAction(title:"Ok", style:UIAlertActionStyle.Default) action in
self.dismissViewControllerAnimated(true, completion: nil);
myAlert.addAction(okAction);
self.presentViewController(myAlert, animated:true, completion:nil);
);
在这一行抛出错误:
if let parseJSON = json
谁能告诉我我在这里做错了什么?
【问题讨论】:
将您的代码移至 if let 语句... 您的 json 未全局声明...所以您需要将代码从if let parseJSON = json
移动到 do...catch
改写后出现这样的消息正常吗? link
只要按照说明,你就可以整理出那些消息
好的!没有错,谢谢:)
【参考方案1】:
变量json
仅在do
块的范围内可见。
将代码移动到do
块中。
也不需要可选绑定。如果代码通过try
语句,则parseJSON
有效且非可选。
do
let parseJSON = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as! NSDictionary
print(parseJSON)
var resultValue = parseJSON["status"] as? String
print("result: \(resultValue)")
var isUserRegistered:Bool = false;
if(resultValue=="Success") isUserRegistered = true;
var messageToDisplay:String = parseJSON["message"] as! String!;
if(!isUserRegistered)
messageToDisplay = parseJSON["message"] as! String!;
dispatch_async(dispatch_get_main_queue(),
//Display alert message with confirmation.
var myAlert = UIAlertController(title:"Alert", message:messageToDisplay, preferredStyle: UIAlertControllerStyle.Alert);
let okAction = UIAlertAction(title:"Ok", style:UIAlertActionStyle.Default) action in
self.dismissViewControllerAnimated(true, completion: nil);
myAlert.addAction(okAction);
self.presentViewController(myAlert, animated:true, completion:nil);
);
catch let error as NSError
print(error)
【讨论】:
改写后出现这样的消息正常吗? link 从 Swift 1 到 2 的迁移是一个巨大的进步。即使使用自动迁移器,也会显示很多错误和警告。对于其中一些,编译器提出了解决方案。对于其他人,请阅读错误列表并手动解决问题。一个好方法是命令单击受影响的符号以读取签名并将其与当前语法进行比较。以上是关于Swift:使用未解析的标识符“json”的主要内容,如果未能解决你的问题,请参考以下文章
使用未声明的类型“JSON”和使用未解析的标识符“JSONEncoding”