是否可以通过从NSDicttionary .plist中读取的密钥的名称动态命名变量(我的是一个char数组)?
NSMutableDictionary *readDict = [[NSMutableDictionary alloc] initWithContentsOfFile:@"path/to/plist"];
NSDictionary * getKeys = [readDict objectForKey:@"info"];
for (id key in getKeys) {
NSLog(@"%@ %@", key, [getKeys objectForKey:key]);
// output key1 some data in here== (repeats with key2, etc.)
NSData *theData = [getKeys objectForKey:key];
const char *hexData = theData.bytes;
|
|__ so for each iteration in the loop it would be:
i.e. key1, key2... to match the plist key names
} instead of a static variable name.
plist中:
<dict>
<key>info</key>
<dict>
<key>key1</key>
<data>
some data in here==
</data>
<key>key2</key>
<data>
some data in here==
</data>
</dict>
</dict>
答案 0 :(得分:2)
简答:否
说明:
您正在声明一个局部变量,其范围只是它声明的循环。这些变量具有分配的静态编译时名称。
此外,动态更改名称没有意义,变量的名称不会影响其内容或更改其生命周期或范围 - 即使您可以更改名称,变量仍然只存在于单个迭代中循环,在迭代结束时,变量被销毁,在下一次迭代开始时创建一个新变量。
以防万一:
有时人们会问他们是否可以使用动态名称创建一个长期存在的变量,因此他们可以稍后通过名称找到它。虽然你仍然不能这样做(因为变量具有编译时名称),但这种情况的标准建议是使用NSMutableDictionary
- 字典是从键(通常是字符串)到 any <的运行时映射。 / em>对象类型(间接包含任何值类型;例如,char *
;因为它们可以包装为对象)。如果这是你的目标 - 创建一个“命名”字符指针的集合 - 那么这就是要采取的路线。但是,您需要确保自己无论这些字符指针引用的是什么,在您的情况下要求您保持这些指针周围的NSData
对象引用(您可以将这些obkject保留在同一个字典中,例如创建一个具有NSData *
和char *
属性的类,并在您的字典中存储此实例。