Числа с плавающей точкой в ​​словаре plist - PullRequest
1 голос
/ 20 августа 2011

У меня два вопроса. Первый вопрос касается типа словаря, который используется в plist.

У меня есть несколько методов класса, которые возвращают определенные числа с плавающей запятой. Вместо того, чтобы жестко закодировать их в коде, я хотел бы поместить их в список на случай, если они изменятся. Вот пара методов класса:

+ (double) returnMinUsableFloatNumber
{
   return 0.005; 
}

+ (double) returnMaxUsableFloatNumber
{
   return 129.11
}

Я создал список и сохранил его, используя словарь, в котором я создал пару ключей: «minNumber» и «maxNumber». Однако единственными типами данных для значений являются «Bool, Data, Date, Number, String». Число представляет собой целое число и обрезает любое введенное десятичное число. Хотя вполне возможно просто сохранить в виде строки и преобразовать в double позже, возможно ли сохранить значение double в качестве значения в словаре plist, чтобы исключить этот шаг?

Кроме того, как я могу получить доступ к этому словарю, так как это методы класса и не могут использовать переменную экземпляра словаря для инициализации со словарем, используемым в plist.

Пример:

+ (double) returnMinUsableFloatNumber
{
   return \\ value returned from key "minNumber"
}

1 Ответ

5 голосов
/ 20 августа 2011

Вам необходимо сохранить ваши NSNumber значения в plist в теге <real>:

<?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>MinUsableFloatNumber</key>
    <real>0.005</real>
    <key>MaxUsableFloatNumber</key>
    <real>129.11</real>
</dict>
</plist>

Затем вы можете прочитать их, инициализировав NSDictionary содержимым вашего plist-файла. Ваши методы будут выглядеть так:

+ (double) returnMinUsableFloatNumber {
    NSDictictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:@"filename.plist"];
    return [[dict objectForKey:@"MinUsableFloatNumber"] doubleValue];
}

+ (double) returnMaxUsableFloatNumber {
    NSDictictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:@"filename.plist"];
    return [[dict objectForKey:@"MaxUsableFloatNumber"] doubleValue];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...