2014-11-24 2 views
0

У меня есть NSDictionary с BOOL и NSString,получить формат XML в NSDictionary и отправить в NSData

NSString *enteredText = [[NSString alloc] initWithString:enterTextField.text]; 
BOOL switchSelected = switchControl.on; 

NSDictionary *dictionaryToSend = [[NSDictionary alloc] initWithObjectsAndKeys:enteredText, @"text", [NSNumber numberWithBool:switchSelected], @"switch", nil]; 

мне нужно, чтобы сделать их в формате XML, а затем отправить их через веб-сокет в формате NSData, вызывают библиотека SocketRocket имеет метод:

// Send a UTF8 String or Data. 
- (void)send:(id)data; 

Я застрял в этом вопросе. Я нашел библиотеку XMLDictionary на gitHub, но это не помогает мне решить этот вопрос. Как мне это сделать?

ответ

0

XML является PITA в Objective C. Вы, вероятно, будет просто сосать его и написать функцию (или ряд функций), чтобы просто добавить строку XML. Что-то вроде:

- (NSString *)xmlStringFromDictionary:(NSDictionary *)dictionary { 

    NSString *returnString = @"<data>"; 

    for (NSString *key in [dictionary allKeys]) { 
     NSString *value = dictionary[key]; 
     returnString = [returnString stringByAppendingString:[NSString stringWithFormat:@"<%@>%@</%@>", key, value, key]]; 
    } 

    returnString = [returnString stringByAppendingString:@"</data>"]; 

    return returnString; 
} 
0

Попробуйте использовать эту стороннюю библиотеку для этого преобразования.

https://github.com/nicklockwood/XMLDictionary

+0

Я нашел библиотеку XMLDictionary на gitHub, но это не помогает мне решить этот вопрос. Как мне это сделать? так, как? Я пытался понять эту библиотеку, но я не знаю, как это сделать! – SpencerReid

+0

Вы прочитали последние слова моего сообщения? – SpencerReid

0

Вы можете использовать NSPropertyListSerialization класс.

NSDictionary *dict = @{@"Key":@"Value"}; 
NSError *error = nil; 
NSData *data = [NSPropertyListSerialization dataWithPropertyList:dict format:NSPropertyListXMLFormat_v1_0 options:NSPropertyListImmutable error:&error]; 
if (!data) { 
    NSLog(@"Error: %@", error.localizedDescription); 
} 
Смежные вопросы