使用PHP从Swift连接到在线数据库(mySQL)。(XCODE)

这个月

我想将我的xcode应用程序连接到在线数据库并从中获取数据并显示在我的应用程序中,然后再使用我的应用程序将数据写入在线数据库中。我已经完成了应用程序的操作,但是现在它给了我一个错误。

错误 : 在此处输入图片说明

我的网页中有我的在线数据库,并且我已经将两个php文件上传到我的网站中的文件管理器中。一个php文件,检索我数据库中的所有数据并将其编码为json。第二个php文件进行查询,以将数据从我的应用程序写入我的在线数据库。

在此处输入图片说明

就像上面的图片即时获取json输出一样,但是当我尝试将数据放入xcode中的数组时,它给了我这个错误。

这是我的代码

import UIKit

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

    @IBOutlet var tableview: UITableView!
    @IBOutlet var inputFriendName: UITextField!
    @IBOutlet var inputFriendInfo: UITextField!

    var data: NSArray = []

    override func viewDidLoad() {
        super.viewDidLoad()
        data = dataOfJson("http://bishanonline.com/extra/serviceselect.php")
        println(data)

    }

    @IBAction func reload() {
        data = dataOfJson("http://bishanonline.com/extra/serviceselect.php")
        self.tableview.reloadData()
    }

    override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
        self.view.endEditing(true)
    }

    func dataOfJson(url: String) -> NSArray {
        var data = NSData(contentsOfURL: NSURL(string: url)!)
        return (NSJSONSerialization.JSONObjectWithData(data!, options: nil, error: nil) as NSArray)
    }

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return data.count
    }

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        var cell: additionInfoCell = self.tableview.dequeueReusableCellWithIdentifier("customCell") as additionInfoCell
        var maindata = (data[indexPath.row] as NSDictionary)
        cell.friendName!.text = maindata["Name"] as? String
        cell.friendInfo!.text = maindata["Additional Info"] as? String
        return cell
    }

    @IBAction func uploadToDatabase() {
        var url: NSString = "http://bishanonline.com/extra/servicequery.php?x=\(inputFriendName.text)&y=\(inputFriendInfo.text)"
        url = url.stringByReplacingOccurrencesOfString(" ", withString: "%20")
        url = url.stringByReplacingOccurrencesOfString("/n", withString: "%0A")
        var data = NSData(contentsOfURL: NSURL(string: url)!)
        var result = NSString(data: data!, encoding: NSUTF8StringEncoding)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}

问题在此代码行中

 func dataOfJson(url: String) -> NSArray {
    var data = NSData(contentsOfURL: NSURL(string: url)!)
    return (NSJSONSerialization.JSONObjectWithData(data!, options: nil, error: nil) as NSArray)
}

请帮助我将json数据放入数组。感谢任何帮助。

启闭机Q

终于解决了问题。首先,我将详细说明确切的问题,然后将发布解决方案。您正在执行的代码完全正常,但真正的问题是您的后端

对于serviceselect.php

您完成的用于获取记录的代码是

func dataOfJson(url: String) -> NSArray 
{
   var data = NSData(contentsOfURL: NSURL(string: url)!)
   return (NSJSONSerialization.JSONObjectWithData(data!, options: nil, error: nil) as NSArray)
}
This above method is returing NSArray but the data you are getting from the server is kinda messed up because along with JSON data some garbage data is included as well.Check out the below image

在此处输入图片说明

因此,当尝试从上述字符串生成JSON数据时,我们会遇到崩溃和错误。可能是由于免费托管服务所致,我们正在收到此消息(不确定)

解决方案

   func getallrecords(){
    let url = NSURL(string: "http://bishanonline.com/extra/serviceselect.php")
    let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in
        var d = NSString(data: data, encoding: NSUTF8StringEncoding)
        var arr = d!.componentsSeparatedByString("<") // spliting the incoming string from "<" operator because before that operator is our required data and storing in array
        var dataweneed:NSString = arr[0] as NSString // arr[0] is the data before "<" operator and arr[1] is actually no use for us
         if let data = NSJSONSerialization.JSONObjectWithData(dataweneed.dataUsingEncoding(NSUTF8StringEncoding)!, options: NSJSONReadingOptions.MutableContainers, error: nil) as? NSArray

// JSONObjectWithData始终具有NSData的第一个参数,实际上输入的数据是NSString,因此我们实际上是将NSString转换为NSData

   {
            for dd in data{
                var name : String = dd["Name"]! as String
                var info : String = dd["Additional Info"]! as String
                println("Name is : \(name)") // MainDeveloper for 0 and BestBuddy for 1 index
                println("Info is : \(info)") // Bishan for 0 and AkilaPrabath for 1 index
     }
        }
    }

    task.resume()
    }

最终输出

最终输出

对于servicequery.php

   func addrecord(x:String,y:String){
   let request = NSMutableURLRequest(URL: NSURL(string: "http://bishanonline.com/extra/servicequery.php")!)
            var postString : String = "x="+x+"&y="+y
            request.HTTPMethod = "GET"
            request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
            let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
                data, response, error in

                if error != nil {
                    println("error=\(error)")
                    return
                }


                let jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSDictionary

                if jsonResult as String == "Successfully added "
                {
                 // Show an alert to notify user
                }
           }
            task.resume()
           }

还要删除“ echo $ query;”。在servicequery.php的第30行

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用PHP从Swift连接到在线数据库(mySQL)。(XCODE)

来自分类Dev

在PHP中从localhost连接到在线数据库

来自分类Dev

使用php连接到特定的数据库(xampp / mysql)

来自分类Dev

如何使用PHP MySQL连接到新数据库

来自分类Dev

PHP-无法连接到远程MySQL数据库

来自分类Dev

无法连接到MySQL数据库-PHP

来自分类Dev

PHP不会连接到mysql数据库

来自分类Dev

从 PHP 文件连接到 mysql 数据库

来自分类Dev

Android应用程序可以直接连接到在线mysql数据库吗

来自分类Dev

如何将Java桌面应用程序连接到在线mysql数据库?

来自分类Dev

Android应用程序可以直接连接到在线mysql数据库吗

来自分类Dev

如何将android连接到在线数据库(mysql)

来自分类Dev

使用Swift,SlimPHP和MySQL将iOS应用连接到数据库

来自分类Dev

连接到MySQL数据库并创建数组以在Swift的其他地方使用

来自分类Dev

将Visual C ++连接到在线数据库

来自分类Dev

在线连接到SQL Server CE数据库

来自分类Dev

无法使用MySQLConnection连接到MySQL数据库

来自分类Dev

使用HTTPS URL连接到远程mysql数据库

来自分类Dev

使用Lua连接到MySQL数据库

来自分类Dev

如何使用Erlang,Yaws连接到mysql数据库

来自分类Dev

使用代理通过PDO连接到mysql数据库

来自分类Dev

使用MySQLWorkbench无法连接到(远程)MySQL数据库

来自分类Dev

使用节点连接到远程mysql数据库

来自分类Dev

使用C#连接到MYSQL数据库

来自分类Dev

使用anylogic对象连接到MySQL数据库

来自分类Dev

无法使用Java从VM连接到mysql数据库

来自分类Dev

无法使用Cron作业连接到MySQL数据库

来自分类Dev

使用MySQLWorkbench无法连接到(远程)MySQL数据库

来自分类Dev

如何使用 UWP 连接到 mySQL 数据库

Related 相关文章

热门标签

归档