2011-08-20 99 views
1

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

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

+ (double) returnMinUsableFloatNumber 
{ 
    return 0.005; 
} 

+ (double) returnMaxUsableFloatNumber 
{ 
    return 129.11 
} 

我创建了一个plist中,并保持它用在我创建了几个键的字典:“MAXNUMBER”“minNumber”和但是,值的唯一数据类型是“布尔,数据,日期,数字,字符串”。该数字是一个整数,并切断输入的任何十进制数。虽然完全可以将其存储为字符串并稍后转换为double,但是是否可以将双精度值存储在plist字典中以消除此步骤?

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

例:

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

你有没有试过在存储的'NSNumber'中调用'[number floatValue]'在plist中? – Eimantas

回答

4

您需要将NSNumber值的plist存储在<real>标签:与您的plist文件的内容初始化NSDictionary

<?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> 

然后你就可以阅读。你的方法看起来像这样:

+ (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]; 
} 
+0

由于您正在为字典分配内存,因此如何释放它? – 5StringRyan

+0

我假设在这些字典上使用autorelease? – 5StringRyan

+0

是的,你可以做到这一点 – akashivskyy