Objective-C преобразование в C #: как я могу использовать .plist с несколькими типами в C #, если словарь строго типизирован? - PullRequest
1 голос
/ 11 декабря 2011

Вопрос немного сложный, поэтому я постараюсь объяснить.У меня есть собственный файл .plist (список свойств XML), который я создал с помощью Xcode.В нем много разных типов данных: NSDictionary, NSArray, NSString, BOOL и т. Д.

Вот пример:

enter image description here

В моем коде я могу быстрополучить NSDictionary всего этого файла, не зная типов данных, используя следующий код (кстати, это код ARC).Единственные типы данных, о которых я знаю, это то, что все ключи являются строками, но значения могут быть такими, как я показал выше:

+ (NSDictionary *)configDictionary
{
    collectorstemplateAppDelegate *appDelegate = (collectorstemplateAppDelegate*)
           [[UIApplication sharedApplication] delegate];
    NSString *path = [[NSBundle mainBundle] 
           pathForResource:appDelegate.currentPlist ofType:@"plist"];
    NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:path];
    return dict;
}

То, что я пытаюсь сделать, - это выполнить то же самоевещь на C #.Я хотел бы взять эти списки и переместить их в мои приложения для телефона Windows Phone, сохраняя ту же структуру.Я понимаю, что мне нужно написать некоторый дополнительный код для обработки XML за файлом, но вы поняли идею ... Я хочу Dictionary или HashTable или Collection чего-то похожего на то, что ясделано выше, не зная типов значений.

Очевидно, в моем случае что-то вроде Dictionary<string, string> не сработает для меня.

Любая помощь будет отличной.

Ответы [ 2 ]

3 голосов
/ 11 декабря 2011

Отвечая на мой вопрос здесь, но в поисках подтверждения ....

Будет ли Dictionary<string, object> работать?Поскольку я знаю, что ключ является строкой, мне просто нужно привести значение к соответствующему типу, правильно?

int appleID = (int) plistDict["appleid"];

Если это правильно или неправильно, кто-то, пожалуйста, дайте мне знать.

0 голосов
/ 11 декабря 2011

Hashtable - это не универсальная версия словаря. Другими словами, вам не нужно указывать типы, с которыми он имеет дело, и вы можете обналичить их так же, как в Objective-C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...