字典plist中的浮点数

5St*_*yan 1 dictionary objective-c plist

我有两个问题.第一个问题是关于plist中使用的字典数据类型.

我有几个类方法返回特定的浮点数.我不想在代码中对它们进行硬编码,而是将它们放在plist中,以防它们发生变化.这里有几个类方法:

+ (double) returnMinUsableFloatNumber
{
   return 0.005; 
}

+ (double) returnMaxUsableFloatNumber
{
   return 129.11
}
Run Code Online (Sandbox Code Playgroud)

我创建了一个plist并使用字典保存它,我创建了几个键:"minNumber"和"maxNumber".但是,值的唯一数据类型是"Bool,Data,Date,Number,String".该数字是一个整数,并切断输入的任何小数.虽然完全可以只存储为字符串并稍后转换为double,但是可以在plist字典中存储double作为值以消除此步骤吗?

此外,如何访问此字典,因为这些是类方法,并且不能使用字典实例变量来初始化plist中使用的字典.

例如:

+ (double) returnMinUsableFloatNumber
{
   return \\ value returned from key "minNumber"
}
Run Code Online (Sandbox Code Playgroud)

aka*_*kyy 5

您需要将NSNumber值存储在<real>标记中的plist中:

<?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>
Run Code Online (Sandbox Code Playgroud)

然后,您可以通过初始化NSDictionaryplist文件的内容来阅读它们.您的方法将如下所示:

+ (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];
}
Run Code Online (Sandbox Code Playgroud)