2010-05-10 3 views
0

Загружаю из txt-файла много информации, и я хотел бы, если возможно, динамически создавать словарь NSmutable с элементами txt.Динамическое имя NSMutableDictionary?

Например, каждый выглядит так: ID элемента | дата | текст

То, что я прошу, является эквивалентом строки NSStringWithFormat :. Можем ли мы сделать то же самое для Mutable Dictionary?

Чтобы быть более практичным, допустим, что дата NSString * равна «23/12/2009» (для Европы). Я хочу создать словарь под названием 23/12/2009 без объявления * 23/12/2009, но просто что-то вроде словаряWithFormat: @ "% @", date];

Я застрял на этом, и я даже не знаю, возможно ли это. Если нет, то как лучше подойти к этому?

Спасибо всем

С уважением

ответ

0

Для разделения компонентов строки, вы можете использовать -[NSString componentsSeparatedByString:], который возвращает NSArray строк. Чтобы получить дату из строки, вы можете использовать -[NSDateFormatter dateFromString:]. Если вам нужен более сложный синтаксический анализ, вы можете посмотреть NSScanner.

0

Похоже, что вы хотите словарь словарей. Сделайте каждый словарь, который вы хотите, а затем вставьте его в другой родительский словарь, используя эту дату, например, в качестве своего ключа.

+0

Это уже сделано для других, но я не вижу, как там делать без ручной инициализации каждого словаря, потому что я, как 150 дат ... – Bruno

0

Можете ли вы сделать txt-файл в xml-файл вместо этого? Затем вы можете вызвать метод dictionaryWithContentsOfFile:, чтобы создать NSMutableDictionary из файла.

Вы можете иметь несколько словарей в XML-файле, указав массив в XML-файле и прочитав его с помощью метода NSArray arrayWithContentsOfFile. Или вы можете иметь словари словарей в XML-файле, это то, что я использую в приложении ClockSmith, чтобы отслеживать все компоненты часов и их настройки. Вот выдержка из XML-файла, чтобы дать вам представление. Он был создан с помощью метода NSDictionary writeToFile:atomically:.

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>290900405.808</key> 
    <dict> 
     <key>Description_Key</key> 
     <string>Digital Clock - AM/PM</string> 
     <key>NIB_Name_Key</key> 
     <string>ClockDigital12Hr</string> 
     <key>Option_Value_Key</key> 
     <integer>3</integer> 
    </dict> 
    <key>290900405.810</key> 
    <dict> 
     <key>Description_Key</key> 
     <string>One Day Calendar</string> 
     <key>NIB_Name_Key</key> 
     <string>CalendarDay</string> 
     <key>Option_Value_Key</key> 
     <integer>0</integer> 
    </dict> 
</dict> 
</plist> 
+0

Это может быть хорошим решением, но я хочу есть словарь для каждой даты, родителя и детей, поэтому мне все равно нужно создать много словарей – Bruno

Смежные вопросы