0

我正在使用 Xcode 4.2.1 编写一些 iOS 代码,我注意到当我通过 plist 文件解析并将所有内容放在一个 中时,NSDictionary所有<string>NSString都以.<real><integer><true/>NSNumber

有没有办法提取所有键和值,但将每个值放在匹配的数据类型中?

例如:

<string>Hi There</string>价值放在一个NSString

<real>1.23</real>价值放在一个float

<integer>4</integer>价值放在一个NSInteger

<true/><false/><boolean>1</boolean>值放入 BOOL

我已经阅读了很多帖子,但找不到任何可以帮助我做到这一点的东西。我什至不确定如何确定一个值周围的包装元素(术语可能是错误的)是什么!

NSDictionary只有NSString左右NSNumber这行不通。

NSArray/将NSMutableArray独立保存每个值的数据类型,还是需要添加第三项(值数据类型)与键和值一起存储?

也许我正在尝试重做已经完成的事情?

编辑:这里有更多关于我想要做的事情的细节......

我想要做的是从 XML 文件中读取一组键/值,然后将这些键作为游戏中的变量提供(键是变量名,变量设置为与键关联的值)。该变量将通过类似的方法检索myVar = [getVar @"name_of_key"];

编辑:这是我目前将 XML 放入 NSDictionary 的方式...

    NSDictionary *dictServer = nil;
    CFPropertyListRef plist =  CFPropertyListCreateFromXMLData(kCFAllocatorDefault, (CFDataRef)someXMLdata, kCFPropertyListImmutable, NULL);
    if ([(id)plist isKindOfClass:[NSDictionary class]]) {
        dictServer = [(NSDictionary *)plist autorelease];
    }
4

1 回答 1

1

NSArray 和 NSDictionary 要求您插入对象(例如 NSNumber),而不是原语(例如 int)。您是否有需要原始数据类型的理由?

更新: NSNumber 具有包装原始值的类方法。

aFloat = [NSNumber numberWithFloat:floatVar];
aBool = [NSNumber numberWithBool:boolVar];

要检索值,您可以使用

[aFloat floatValue]
[aBool boolValue]
于 2012-07-11T17:52:31.567 回答