Пользовательские объекты с HessianKit и Java Backend - PullRequest
1 голос
/ 09 февраля 2012

У меня есть приложение для iPhone, которое использует HessianKit для общения с моим Java-сервером. Несколько методов, которые я использую, возвращают пользовательские объекты, и я не смог выяснить, как заставить их загружаться как правильный объект на стороне iPhone.

Вот в основном то, что у меня есть:

в Java:

public class QRSet implements Serializable{
{

  protected Pagination pagination;//another custom class
  protected int resultSetSize;
  protected List results;

  //...standard getters, setters, and constructors...
}

В объективе-c

@protocol QRSet <NSObject>

@property (strong, atomic) id<Pagination> pagination;
@property int resultSetSize;
@property (strong, atomic) NSArray * results;

//...not sure how I would need to do getters and setters here...


@end

Изначально у меня была целевая версия c в качестве собственного класса вместо протокола, но я обнаружил, что в методе сопоставления произошли изменения, и теперь ему требуется этот формат:

[CWHessianArchiver setClassName:@"com.test.queries.QRSet" forProtocol:@protocol(QRSet)];

Вот как я называю свою службу:

 id<QRSet> qrSet = [self.proxy doPaginatedList:token :filter :startingIndex];

Однако здесь я застрял. Если я вызову свой метод для возврата QRSet, я все равно получу только объект NSDictionary. Кто-нибудь знает, какие шаги мне не хватает, чтобы заставить его воссоздать объект QRSet на стороне клиента?

1 Ответ

1 голос
/ 31 июля 2012

Для объектов, которые возвращаются из службы, вам нужно указать отображение в CWHessianUnarchiver, например так:

[CWHessianUnarchiver setProtocol:@protocol(QRSet) forClassName:@"com.test.queries.QRSet"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...