Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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
Json 从函数更改标签中的文本_Json_Swift_Uiviewcontroller_Uilabel_Ios8.1 - Fatal编程技术网

Json 从函数更改标签中的文本

Json 从函数更改标签中的文本,json,swift,uiviewcontroller,uilabel,ios8.1,Json,Swift,Uiviewcontroller,Uilabel,Ios8.1,我有一个从JSON通信请求数据的函数 let title:NSString = jsonData.objectForKey("title") as NSString 现在我有了一个标题为的变量。现在,我想将其设置为视图上的标签 这是链接到我的文件 @IBOutlet weak var titleLabel: UILabel! 因此,我认为我的最后一步应该是: self.titleLabel.text = "\(title)" 遗憾的是,这不起作用,我得到以下错误: fatal error:

我有一个从JSON通信请求数据的函数

let title:NSString = jsonData.objectForKey("title") as NSString
现在我有了一个标题为的变量。现在,我想将其设置为视图上的标签

这是链接到我的文件

@IBOutlet weak var titleLabel: UILabel!
因此,我认为我的最后一步应该是:

self.titleLabel.text = "\(title)"
遗憾的是,这不起作用,我得到以下错误:

fatal error: unexpectedly found nil while unwrapping an Optional value
(lldb) 

Thread 1: EXC_BAD_INSTRUCTION(code=EXC_i386_INVOP, subcode=0x0
我使用NSlog输出以检查变量title是否为nil,并发现其已填充:

[3426:83507] Using email accounts over POP on Windows 8.1 
我被困在这上面了,需要帮忙吗

import Foundation
导入UIKit

class SolutionViewController: UIViewController {


@IBOutlet weak var titleLabel: UILabel!
@IBOutlet weak var searchTerm: UITextField!

@IBAction func searchTapped(){

    var searchTerms:NSString = searchTerm.text

    if ( searchTerms.isEqualToString("") ) {

        var alertView:UIAlertView = UIAlertView()
        alertView.title = "Empty Search Term"
        alertView.message = "Please enter a search term"
        alertView.delegate = self
        alertView.addButtonWithTitle("OK")
        alertView.show()
    } else {
        let strSearchTerm:String = "\(searchTerms)"
        var convSearchTerm:String = strSearchTerm.stringByReplacingOccurrencesOfString(" ", withString: "+", options: NSStringCompareOptions.LiteralSearch, range: nil)

        var post:NSString = "searchTerm=\(convSearchTerm)"

        NSLog("PostData: %@",post);

        var url:NSURL = NSURL(string: "http://turbo-tires-21-188007.euw1.nitrousbox.com/iosSearch.php?searchTerm=\(convSearchTerm)")!

        var postData:NSData = post.dataUsingEncoding(NSASCIIStringEncoding)!

        var postLength:NSString = String( postData.length )

        var request:NSMutableURLRequest = NSMutableURLRequest(URL: url)
        request.HTTPMethod = "POST"
        request.HTTPBody = postData
        request.setValue(postLength, forHTTPHeaderField: "Content-Length")
        request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
        request.setValue("application/json", forHTTPHeaderField: "Accept")


        var reponseError: NSError?
        var response: NSURLResponse?

        var urlData: NSData? = NSURLConnection.sendSynchronousRequest(request, returningResponse:&response, error:&reponseError)

        if ( urlData != nil ) {
            let res = response as NSHTTPURLResponse!;

            NSLog("Response code: %ld", res.statusCode);

            if (res.statusCode >= 200 && res.statusCode < 300)
            {
                var responseData:NSString  = NSString(data:urlData!, encoding:NSUTF8StringEncoding)!

                NSLog("Response ==> %@", responseData);

                var error: NSError?

                let jsonData:NSDictionary = NSJSONSerialization.JSONObjectWithData(urlData!, options:NSJSONReadingOptions.MutableContainers , error: &error) as NSDictionary


                let title:NSString? = jsonData.objectForKey("title") as? NSString

                NSLog("\(title)")
                if title != "" {

                self.titleLabel.text = "\(title)"
                //[jsonData[@"success"] integerValue];
                }


            }
        }
    }
};
}
class SolutionViewController:UIViewController{
@IBVAR弱var标题标签:UILabel!
@IBMOutlet弱var搜索项:UITextField!
@iAction func searchTapped(){
var searchTerms:NSString=searchTerm.text
if(searchTerms.isEqualToString(“”){
var-alertView:UIAlertView=UIAlertView()
alertView.title=“空搜索词”
alertView.message=“请输入搜索词”
alertView.delegate=self
alertView.addButtonWithTitle(“确定”)
alertView.show()
}否则{
让strSearchTerms:String=“\(搜索术语)”
var convSearchTerm:String=strearchTerm.stringByReplacingOccurrencesOfString(“”,带字符串“+”,选项:NSStringCompareOptions.LiteralSearch,范围:nil)
var post:NSString=“searchTerm=\(convsarchTerm)”
NSLog(“PostData:%@”,post);
变量url:NSURL=NSURL(字符串:http://turbo-tires-21-188007.euw1.nitrousbox.com/iosSearch.php?searchTerm=\(术语)“)!
var postData:NSData=post.dataUsingEncoding(NSASCIIStringEncoding)!
变量postLength:NSString=String(postData.length)
var请求:NSMutableURLRequest=NSMutableURLRequest(URL:URL)
request.HTTPMethod=“POST”
request.HTTPBody=postData
request.setValue(postLength,forHTTPHeaderField:“内容长度”)
request.setValue(“application/x-www-form-urlencoded”,forHTTPHeaderField:“内容类型”)
request.setValue(“application/json”,forHTTPHeaderField:“Accept”)
var REPORNSERROR:NSError?
var响应:nsurresponse?
变量urlData:NSData?=NSURLConnection.sendSynchronousRequest(请求、返回响应:&response、错误:&ResponseError)
if(urlData!=nil){
让res=响应为NSHTTPURLResponse!;
NSLog(“响应代码:%ld”,res.statusCode);
如果(res.statusCode>=200&&res.statusCode<300)
{
var responseData:NSString=NSString(数据:urlData!,编码:NSUTF8StringEncoding)!
NSLog(“响应==>%@”,响应数据);
var错误:N错误?
让jsonData:NSDictionary=NSJSONSerialization.JSONObjectWithData(urlData!,选项:NSJSONReadingOptions.MutableContainers,错误:&error)作为NSDictionary
将title:NSString?=jsonData.objectForKey(“title”)设为?NSString
NSLog(“\(标题)”)
如果标题!“”{
self.titleLabel.text=“\(标题)”
//[jsonData[@“success”]integerValue];
}
}
}
}
};
}

尝试通过执行以下操作将标题变量声明为可选变量:

var title:NSString? = jsonData.objectForKey("title") as? NSString

若标签上显示nil,则键标题的对象不存在或不能转换为NSString。执行此操作后,如果再次发生错误,则表示您的标题标签为零,并且是时候检查您的标签在storyboard inspector中的引用出口了,如果它存在或不存在

您完全正确,但这是我的错别字,谢谢。谢谢您的回复!我试过了,没有错。还在崩溃。你检查过标题标签是否连接正确了吗?如果是,则发布完整代码,因为测试self.titleLabel.text=“test”时错误不在此处。但正如您在上面所看到的,我已经链接了。单击标签和连接检查器(如上面的屏幕截图中所示)再次检查链接。关于此问题的任何可提供的帮助?