ios — Echo PHP массив объектов для Swift NSDictionary

Я пытаюсь создать массив объектов в PHP, а затем повторить его для использования в Swift. Я могу получить один объект, чтобы показать в Swift, когда я делаю println на объекте JSON, но мне нужно много объектов, отраженных.

class catRow{
public $id;
public $person;
public $item;
public $descr;
public $link;
public $price;
}

$prepare_string = "SELECT * FROM items ORDER BY person LIMIT 5";
$stmt = $dbh->prepare($prepare_string);
$stmt->execute();
while($row = $stmt->fetch()){
$catRow = new stdClass;
$catRow-> id = $row['id'];
$catRow-> person = $row['person'];
$catRow-> item = $row['item'];
$catRow-> descr = $row['descr'];
$catRow-> link = $row['link'];
$catRow-> price = $row['price'];
$allRows[] = $catRow;
}

echo json_encode($allRows);

А потом со стороны Свифта я (обобщенно):

let catalogueRows: NSDIctionary = NSJSONSerialization.JSONObjectWithData(dataObject!, options: nil, error: nil) as NSDictionary

println(catalogueRows)

Это работает, когда я эхо $catRow но я хочу отобразить каждую строку из этой таблицы в моей базе данных.

0

Решение

allRows это массив, а не словарь. Так что вы должны бросить catalogueRows к NSArray:

var error: NSError?
if let catalogueRows = NSJSONSerialization.JSONObjectWithData(dataObject!, options: nil, error: &error) as? NSArray {
// successful, do something with `catalogueRows`
println(catalogueRows)
} else {
println("parse error: /(error)")
}

Или, может быть, даже лучше, приведите его к массиву словарей Swift:

var error: NSError?
if let catalogueRows = NSJSONSerialization.JSONObjectWithData(dataObject!, options: nil, error: &error) as? [[String: AnyObject]] {
// successful, do something with `catalogueRows`
println(catalogueRows)
} else {
println("parse error: /(error)")
}

Обратите внимание, что в обоих этих случаях я (а) фиксирую error объект; и (б) использовать if let синтаксис для изящной обработки сбоев.

1

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

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

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