ios — опубликовать NSArray от swift до переполнения стека

Я попытался опубликовать массив целых чисел на моем сервере, чтобы PHP мог работать с этим. Моя проблема в том, что это не работает. Я только начал программировать на PHP, поэтому у меня мало знаний …

Вот мой быстрый код:

let url = NSURL(string: myURL)!
var session: NSURLSession!
let request = NSMutableURLRequest(URL: url)
request.HTTPMethod = "POST"
do {
dataNotice = try context.executeFetchRequest(fetchRequestForNotice) as! [Notice]
} catch {
print(error)
}

//create array of existing IDs
var noticeIDs: [Int] = [Int]()
for var i = 0; i < dataNotice.count; i++ {

noticeIDs.append(dataNotice[i].id as! Int)
print("Notice ID: " + String(dataNotice[i].id))
}

let postString = "server=\(server)&username=\(username)&password=\(password)&database=\(database)&noticeIDs=\(noticeIDs)"
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)

let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()

session = NSURLSession(configuration: configuration, delegate: self, delegateQueue: nil)

let task = session.dataTaskWithRequest(request)

task.resume()

ОБНОВИТЬ
И это мой PHP-код для захвата массива:

    <?php

$method = $_POST['method'];
$db_server = $_POST['server'];
$db_benutzer = $_POST['username'];
$db_passwort = $_POST['password'];
$db_name = $_POST['database'];
$applicationNotices = $_POST['noticeIDs'];

$databaseNotices;

$con=mysqli_connect($db_server,$db_benutzer,$db_passwort,$db_name);

if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$sql = "SELECT * FROM `Notice`";
$sqlID = "SELECT `ID` FROM `Notice`";

if ($result = mysqli_query($con, $sql)) {
if ($resultID = mysqli_query($con, $sqlID)) {
$resultArray = array();
$tempArray = array();
$idArray = array();
$tempIDArray = array();

while($rowID = $resultID->fetch_object())
{
$tempIDArray = intval($rowID->ID);
array_push($idArray, $tempIDArray);
}

while($row = $result->fetch_object())
{
$tempArray = $row;
array_push($resultArray, $tempArray);
}

$neededNotices = array_diff($idArray, $applicationNotices);

$array = array_map('intval', $neededNotices);
$array = implode("','",$array);

$finalSql = "SELECT * FROM `Notice` WHERE `ID` IN ('".$array."')";
if ($finalResult = mysqli_query($con, $finalSql)) {
$finalArray = array();
$tempFinalArray = array();

while($finalRow = $finalResult->fetch_object())
{
$tempFinalArray = $finalRow;
array_push($finalArray, $tempFinalArray);
}

echo json_encode($finalArray);
}
}
}

mysqli_close($con);

?>

Этот код должен взять существующие идентификаторы в моей базе данных Core Data и перенести их на мой Сервер для сравнения этих идентификаторов с идентификаторами моей базы данных sql и возврата всех записей, которые в данный момент отсутствуют в приложении.

Если я запускаю код, я получаю сообщение об ошибке:

Не удалось преобразовать значение типа «__NSArray0» (0x110469780) в «NSMutableArray» (0x11046a978).

Как правильно перенести данные на мой сервер?

Большое спасибо!

0

Решение

Ну, во-первых, я бы не передавал имя пользователя, пароль и имя хоста каждый раз, потому что это чрезмерное сетевое взаимодействие, даже если оно кажется маленьким и менее безопасным. Во-вторых, вы устанавливаете свой HTTPMethod как POST, поэтому в вашем php-коде вы должны получать значение из $_POST вместо запроса.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]