2012-02-09 2 views
1

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

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

в Java:

public class QRSet implements Serializable{ 
{ 

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

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

В Objective-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 

Первоначально я имел объективную версию с в качестве своего класса вместо протокол, но я обнаружил, что произошел сбой в том, как работает метод сопоставления, и теперь он требует этого формата:

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

Это, как я называю обслуживание:

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

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

+0

Проблема может быть, что вы добавить перевод для 'QueryResultSet', но ожидать результата 'QRSet'. Это тип вопроса или тип вашего проекта? – PeyloW

+0

QRSet был всего лишь текстом, который я использовал для этого вопроса (на самом деле это QueryResultSet на самом деле в самом коде). Однако я исправил его в своем вопросе для ясности. – cain

ответ

1

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

[CWHessianUnarchiver setProtocol:@protocol(QRSet) forClassName:@"com.test.queries.QRSet"]; 
Смежные вопросы