Форум программистов, компьютерный форум, киберфорум
Наши страницы

Swift

Войти
Регистрация
Восстановить пароль
 
 
Konstatine
0 / 0 / 0
Регистрация: 29.06.2016
Сообщений: 35
#1

ParseJSON. Не заходит в условие - Swift

27.07.2016, 17:28. Просмотров 1449. Ответов 23
Метки нет (Все метки)

Доброго Всем здоровья!
Создаю страницу регистрации, посмотрел код в интернете, написал, но код нерабочий:

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
...
let myURL = NSURL(string: "http://www.z98759fe.beget.ru/UserRegister.php");
let request = NSMutableURLRequest(URL:myURL!);
request.HTTPMethod = "POST";
 
let postString = "email=\(UserEmail)&password=\(UserPassword)";
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding);
 
let task = NSURLSession.sharedSession().dataTaskWithRequest(request){data,respose,error in
let json = NSJSONSerialization.JSONObjectWithData(data, options: .MutableContainers, error: &err) as? NSDictionary
 
if let parseJSON = json {
...
В условие у меня почему-то не заходит, так как json равен nil.
Подскажите как быть? Уже три дня ломаю голову и в интернете ответа не нашел.
Благодарю.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.07.2016, 17:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос ParseJSON. Не заходит в условие (Swift):

JQuery.parseJSON - jQuery
Всем привет. Имеем скрипт php где формируестя страница и где имеютс встроенные javascript. Все работает притензий нет. Переножу...

TypeError: $.parseJSON is not a function - Node.js
Здравствуйте, вот не давно столкнулся с такой проблемой что пишет следующую ошибку: "C:\Program Files (x86)\PhpStorm...

JQuery.parseJSON Синтактическая ощибка в консоле браузера - jQuery
У меня стоит библиотека jQuery 2.1.3 и браузер показывает на jQuery.parseJSON = function( data ) { return JSON.parse( data + "" ); ...

Не заходит на сайты, но в Мэйл Агент заходит - Windows Vista
Здравствуйте! Возникла проблема с подключением к инету на Висте. подключаюсь к интернету все путем вроде. Значок подключения выходит. Но...

Не заходит в аккаунт гугл, не заходит в аккаунт яндекс - Спутниковая связь
Кто нибудь, помогите решить проблему! Не могу зайти на страницы яндекс и гугл при условии, что я нахожусь в своём аккаунте. Браузер (хром...

Условие if. Как сделать повтор выполнения if-а, если условие не удовлетворяет требованиям в данный момент - C#
Суть вопроса такова. В процессе работы программы запускается несколько потоков. Один из них выполняет бесконечный цикл, в котором каждую...

23
kabudasay
3 / 3 / 1
Регистрация: 13.04.2015
Сообщений: 51
01.08.2016, 17:14 #16
я это и так увидел поэтому и говорю у вас косяк со стороны пыхи в первую очередь! вам бы с php разобраться а потом уже в свифт лезте с моим кодом точно работать будет но только я делаю по умнее я через условие создаю конект в свифте сначала я проверяю на заполнение поля а затем только ... ну что собственно говорить вот код !


Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
//  Created by yaKuza on 11.07.16.
//  Copyright © 2016 yaKuza. All rights reserved.
//
 
import UIKit
 
class RegisterVC: UIViewController {
    @IBOutlet var usernameTxt: UITextField!
    @IBOutlet var passwordTxt: UITextField!
    @IBOutlet var emailTxt: UITextField!
    @IBOutlet var firstnameTxt: UITextField!
    @IBOutlet var lastnameTxt: UITextField!
 
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }
 
    
    @IBAction func register_click(sender: AnyObject) {
       
        //if no text
        if usernameTxt.text!.isEmpty || passwordTxt.text!.isEmpty || emailTxt.text!.isEmpty || firstnameTxt.text!.isEmpty || lastnameTxt.text!.isEmpty{
            
            // 1st Reg placeholders
            
            usernameTxt.attributedPlaceholder = NSAttributedString(string: "Вы не ввели имя пользователя", attributes: [NSForegroundColorAttributeName: UIColor.redColor()])
            passwordTxt.attributedPlaceholder = NSAttributedString(string: "Вы не ввели пароль", attributes: [NSForegroundColorAttributeName: UIColor.redColor()])
            emailTxt.attributedPlaceholder = NSAttributedString(string: "Вы не ввели Email", attributes: [NSForegroundColorAttributeName: UIColor.redColor()])
            firstnameTxt.attributedPlaceholder = NSAttributedString(string: "Вы не ввели Имя", attributes: [NSForegroundColorAttributeName: UIColor.redColor()])
            lastnameTxt.attributedPlaceholder = NSAttributedString(string: "Вы не ввели Фамилию", attributes: [NSForegroundColorAttributeName: UIColor.redColor()])
            //If text is entered
        }else{
            
            //Create new user in Mysql
            let url = NSURL(string:"http://xxxxx.ru/register.php")!
            
            //Request to this file
            let request = NSMutableURLRequest(URL:url)
            //Method to pass data
            request.HTTPMethod = "POST"
            
            //Body to appended to url
            let body = "username=\(usernameTxt.text!.lowercaseString)&password=\(passwordTxt.text!)&email=\(emailTxt.text!)&fullname=\(firstnameTxt.text!)%20\(lastnameTxt.text!)"
           
            //request body
            request.HTTPBody = body.dataUsingEncoding(NSUTF8StringEncoding)
            //launching
            NSURLSession.sharedSession().dataTaskWithRequest(request, completionHandler: { (data:NSData?, response:NSURLResponse?, error:NSError?) in
                
                if error == nil{
                    //send request to comunicate back to ui
                    dispatch_async(dispatch_get_main_queue(), {
                        do{
                            //get json result
                            let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as? NSDictionary
                            //assing json to new var parseJSON in guard/secured way
                            guard let parseJSON = json else {
                                print("Error while parsing")
                                return
                            }
                            
                            //Get id from pase JSON dictionary
                            let id = parseJSON["id"]
                            
                            //Succesfully registered
                            if id != nil
                            {
                                //save info we reciwed from our host
                                NSUserDefaults.standardUserDefaults().setObject(parseJSON, forKey: "parseJSON")
                                user = NSUserDefaults.standardUserDefaults().valueForKey("parseJSON") as? NSDictionary
                                
                                dispatch_async(dispatch_get_main_queue(), {
                                    appDelegete.login()
                                    
                                })
                                // return ?
                            }
                                
                            //Error
                            else{
                                dispatch_async(dispatch_get_main_queue(), {
                                    let message = parseJSON["message"] as! String
                                    appDelegete.infoView(message: message, color : colorSmoothRed)
                                })
                                return
                            }
                            
                        }
                        catch{
                            dispatch_async(dispatch_get_main_queue(), {
                                let message = String(error)
                                appDelegete.infoView(message: message, color : colorSmoothRed)
                            })
                            return
                        }
                        
                    })
                    
                }else{
                    //if unable to proceed request
                    
                    dispatch_async(dispatch_get_main_queue(), {
                        let message = error!.localizedDescription
                        appDelegete.infoView(message: message, color : colorSmoothRed)
                    })
                    return
                }
            }).resume()
        }
    }
    
    //White Status bar
    override func preferredStatusBarStyle() -> UIStatusBarStyle {
        return UIStatusBarStyle.LightContent
    }
}
Добавлено через 30 секунд
я же говорю я не вижу ваш php
0
Konstatine
0 / 0 / 0
Регистрация: 29.06.2016
Сообщений: 35
01.08.2016, 17:17  [ТС] #17
Спасибо. Еще раз!
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php 
 
 
require("Conn.php");
require("MySQLDao.php");
 
$email = htmlentities($_POST["email"]);
$password = htmlentities($_POST["password"]);
 
$returnValue = array();
 
if(empty($email) || empty($password))
{
$returnValue["status"] = "error";
$returnValue["message"] = "Missing required field";
echo json_encode($returnValue);
return;
}
 
$dao = new MySQLDao();
$dao->openConnection();
$userDetails = $dao->getUserDetails($email);
 
if(!empty($userDetails))
{
$returnValue["status"] = "error";
$returnValue["message"] = "User already exists";
echo json_encode($returnValue);
return;
}
 
$secure_password = md5($password); // I do this, so that user password cannot be read even by me
 
$result = $dao->registerUser($email,$secure_password);
 
if($result)
{
$returnValue["status"] = "Success";
$returnValue["message"] = "User is registered";
echo json_encode($returnValue);
return;
}
 
$dao->closeConnection();
 
?>
Это мой код. Но я сейчас попробую применить ваш.
0
kabudasay
3 / 3 / 1
Регистрация: 13.04.2015
Сообщений: 51
01.08.2016, 17:48 #18
какие параметры функции registerUser
PHP
1
$result = $dao->registerUser($email,$secure_password);
у меня функция выглядит вот так

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  // Insert user details
    public function registerUser($username, $password, $salt, $email, $fullname) {
 
        // sql command
        $sql = "INSERT INTO users SET username=?, password=?, salt=?, email=?, fullname=?";
 
        // store query result in $statement
        $statement = $this->conn->prepare($sql);
 
        // if error
        if (!$statement) {
            throw new Exception($statement->error);
        }
 
        // bind 5 param of type string to be placed in $sql command
        $statement->bind_param("sssss", $username, $password, $salt, $email, $fullname);
 
        $returnValue = $statement->execute();
 
        return $returnValue;
 
    }
PHP
1
 $statement->bind_param("sssss"
эти sssss обозначают string то есть в бд у меня это выглядит так ТУТ БД структура

Добавлено через 14 минут
$result = $dao->registerUser($email,$secure_password);

посмотри какие параметры передает в функцию registerUser

Добавлено через 9 минут
что лог говорит когда по ссылке идете ? он должен писать ошибку в файле ?
0
Konstatine
0 / 0 / 0
Регистрация: 29.06.2016
Сообщений: 35
01.08.2016, 17:50  [ТС] #19
Спасибо, слишком много всего. Надо поразбираться. Напишу вам. В вашей базе запись создал
0
kabudasay
3 / 3 / 1
Регистрация: 13.04.2015
Сообщений: 51
01.08.2016, 17:59 #20
http://prntscr.com/c08xd8

Добавлено через 2 минуты
покажи логи сервера когда ломишься по ссылке

Добавлено через 5 минут
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
// парсишь файлик
class access {
 
    // connection global variables
    var $host = null;
    var $user = null;
    var $pass = null;
    var $name = null;
    var $conn = null;
    var $result = null;
 
 
    // constructing class
    function __construct($dbhost, $dbuser, $dbpass, $dbname) {
 
        $this->host = $dbhost;
        $this->user = $dbuser;
        $this->pass = $dbpass;
        $this->name = $dbname;
 
    }
 
 
    // connection function
    public function connect() {
 
        // establish connection and store it in $conn
        $this->conn = new mysqli($this->host, $this->user, $this->pass, $this->name);
 
        // if error
        if (mysqli_connect_errno()) {
            echo 'Could not connect to database';
        }
 
        // support all languages
        $this->conn->set_charset("utf8");
 
    }
 
 
    // disconnection function
    public function disconnect() {
 
        if ($this->conn != null) {
            $this->conn->close();
        }
 
    }
 
 
 
public function registerUser($email, $password){
 
        // sql command
        $sql = "INSERT INTO users SET email=?, password=?";
 
        // store query result in $statement
        $statement = $this->conn->prepare($sql);
 
        // if error
        if (!$statement) {
            throw new Exception($statement->error);
        }
 
        // bind 5 param of type string to be placed in $sql command
        $statement->bind_param("ss", $email, $password);
 
        $returnValue = $statement->execute();
 
        return $returnValue;
 
    }

Попробуй функцию вот так сделать


пример файлика который парсишь

[section]
dbhost = localhost
dbuser = имя пользователя
dbpass = пароль к бд
dbname = имя бд
0
Konstatine
0 / 0 / 0
Регистрация: 29.06.2016
Сообщений: 35
01.08.2016, 18:04  [ТС] #21
Создался успешно, вижу.
А логи сервера, простите, где глянуть? Читал что можно просмотреть их подключив устройство через "Device Logs", но я тестирую через симулятор.
0
kabudasay
3 / 3 / 1
Регистрация: 13.04.2015
Сообщений: 51
02.08.2016, 08:55 #22
Отписался бы, что собрал там
0
Konstatine
0 / 0 / 0
Регистрация: 29.06.2016
Сообщений: 35
02.08.2016, 19:54  [ТС] #23
Конечно! Сегодня обязательно отпишусь

Добавлено через 10 часов 40 минут
kabudasay, спасибо еще раз! Все работает!
Пока Swift выдает правда сообщение: Thread 6: EXC_BAD_INSTRUCTION(code=EXCI386_INVOP,subcode=0x0)
но в базу записывает..уже радует
0
kabudasay
3 / 3 / 1
Регистрация: 13.04.2015
Сообщений: 51
03.08.2016, 07:20 #24
ну тут уже swift в него если вникнуть то проблем не будет ... и не надо забывать учить php

Добавлено через 8 минут
краш скорее всего происходит из за неправильно ввода строковых в NSDictionary
0
03.08.2016, 07:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.08.2016, 07:20
Привет! Вот еще темы с ответами:

Условие в Delphi 2010, нужно сделать условие на TDBEDIT - Delphi БД
Подскажите пожалуйста, у меня есть два эдита и одна кнопка, мне нужно сделать условие что при нажатии на кнопку, если эдиты пустые выдавал...

Почему выполняется условие else, если выполнилось условие if? - JavaScript
При вводе буквы, которое есть в переменной word, по идеи, если такой буквы нету, то должно выдать сообщение, то, что **Такой буквы нету**. ...

Условие в условие - отправка на почту текста - PHP
На сайте в html - форма &lt;/br&gt; &lt;h1&gt;Оборудование&lt;/h1&gt; &lt;/br&gt; &lt;table id=&quot;table_container&quot;&gt; &lt;tr id=&quot;tr_image_&quot;...

Если не выполняется условие в if, то не попадает в условие в else, а попадает сразу в блок catch - C#
Всем привет) Решил выучить язык C#... наткулся на простенький пример ниже! если не выполняется if, не попадаю в else, а попадаю сразу в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru