2016-07-28 10 views
0

Ich habe CakePHP 2 Ausgabe JSON, und ich habe Swift 2 Code im Xcode iPhone-Emulator laden diese JSON-Daten.CakePHP 2 requestAction bricht meine JSON-Codierung auf Swift ... unsichtbar

In meinem Controller hier ist der Code, der die JSON erzeugt:

public function iosDemoIndex() { 
    $studentDataIn = $this->Student->getStudentsByUserId(298, 'rASC'); 
    $studentDataOut = []; 
    foreach ($studentDataIn as $student) { 
     //$currentIep = $this->Iep->requestAction('/ieps/getCurrentIep/' . $student['Student']['id']); 
     $goals = $this->Goal->find('all', array('conditions' => array('Goal.student_id =' => $student['Student']['id']))); 
     $goalHolder = array(); 
     foreach ($goals as $goal) { 
      array_push($goalHolder, $goal['Goal']['goal_title']); 
     } 
     array_push($studentDataOut, array('studentName' => $student['Student']['l_name']. ", " . $student['Student']['f_name'], 'studentGoals' => $goalHolder)); 
    } 
    $this->set(array(
    'students' => $studentDataOut, 
    '_serialize' => array('students') 
    )); 
} 

der gut arbeitet. Mein Swift-Code lädt das Schüler-Array erfolgreich über den JSON in ein Array von Strukturen. Aber wenn ich einfach un-Kommentarzeile 5 (die Daten packt, die ich letztlich hoffen, zu verwenden, um den Fund in Zeile 6 zu beschränken), Xcode gibt mir:

Error with Json: Error Domain=NSCocoaErrorDomain Code=3840 "Invalid value around character 2." UserInfo={NSDebugDescription=Invalid value around character 2.} 

Linie 5 soll nicht das JSON-Dokument in jedem ändern Weg. Und wenn ich mir das JSON selbst ansehe, sieht es gleich aus, egal ob die Zeile auskommentiert ist.

Also, irgendwelche Ideen, was eine nicht verwandte, sollte unsichtbare requestAction könnte tun, das ist meine JSON brechen ... in einer Weise, die ich nicht sehe, wenn ich es ansehe? Vielen Dank.

Antwort

0

Für die Nachwelt (future-me):

Es war ein Login Problem. Der Grund, dass der JSON in meinem Browser identisch aussah, war, dass ich zu diesem Zeitpunkt eine aktive Benutzersitzung im Browser hatte. Ohne diese Sitzung (z. B. wenn der iOS-Emulator versuchte, die JSON-Seite zu laden) gab der CakePHP eine Weiterleitung zum Anmelden zurück. Umsetzbare Lösungen umfassen das Replizieren des requestAction-Codes im JSON-generierenden Controller (obwohl das nicht sehr DRY ist) oder das Einrichten einer korrekten Login-Behandlung auf der Swift-Seite der Dinge.