Для десериализации JSON с помощью Swift 2.0
есть отличный пример . Трюк состоит в том, чтобы использовать ключевое слово guard и цепочки присвоений следующим образом:
init?(attributes: [String : AnyObject]) {
guard let name = attributes["name"] as? String,
let coordinates = attributes["coordinates"] as? [String: Double],
let latitude = coordinates["lat"],
let longitude = coordinates["lng"],
else {
return nil
}
self.name = name
self.coordinates = CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
}
Я лично предпочитаю собственный парсинг против какой-либо третьей стороны, так как он прозрачен и без магии. (и ошибка меньше?)
Вы могли запустить новый процесс удара, перенаправляющий stderr того процесса:
$ bash -i 2> stderr.log
$
Попробуйте свои команды в doublequotes, как так:
ssh remotehost "command" 2>~/stderr
Протестированный в моей локальной системе с помощью несуществующего файла на удаленном хосте.
$ ssh remotehost "tail x;head x" 2>~/stderr
$ cat stderr
tail: cannot open `x' for reading: No such file or directory
head: cannot open `x' for reading: No such file or directory
Я не вижу Вашей проблемы, она работает, как разработано:
$ ssh remotehost 'ls nosuchfile; ls /etc/passwd' >/tmp/stdout 2>/tmp/stderr
$ cat /tmp/stdout
/etc/passwd
$ cat /tmp/stderr
nosuchfile not found
Используйте exec
встроенный в ударе:
exec 2> /tmp/myfile
Tried ssh -t
для создания псевдо-TTY на удаленном конце?