【发布时间】:2019-11-08 07:26:14
【问题描述】:
我有一个像这样的.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>key1</key>
<string>variable1</string>
<key>key2</key>
<array>
<string>foobar</string>
<string>variable2</string>
</array>
</dict>
</plist>
我的代码如下所示:
NSString *variable1 = @"Hello";
NSString *variable2 = @"World!";
NSMutableDictionary *myDict = [NSMutableDictionary dictionaryWithContentsOfFile:@"/path/to/file.plist"];
NSLog(@"key1: %@", [myDict valueForKey:@"key1"]);
NSLog(@"key2: %@", [[myDict valueForKey:@"key2"] objectAtIndex:1]);
// outputs
// key1: variable1
// key2: variable2
我希望做的是让.plist 文件中的variable1 和variable2 使用代码中的variable1 和variable2(没有专门在代码中执行),所以值从.plist 最终成为Hello 为variable1 和World! 为variable2。
显然可以像这样分配它们:
[myDict setObject:variable1 forKey:@"key1"];
这正是我想要避免的。显然,“变量”只是.plist 中的字符串,而 obj-c 并不认为将代码中的变量值分配给它们。所以问题是我可以为他们分配代码中的值(如<variable>variable1</variable>),还是不让他们成为字符串?或者这可能是不可能的。
注意:我不是程序员,所以请记住这一点,谢谢。
【问题讨论】:
-
可能在 info.plist 中写入不是一个好主意,而且它不起作用,因为您试图将字典写入 App 包中的 .plist 文件,该文件是只读的。因此,即使您以其他方式完成它,它也不会起作用,并且也会有更多的拒绝机会。顺便说一句,为什么只有 Info.Plist?我的意思是为什么你不能以其他方式拥有它,比如 NSUserDefault 和 SQLite
-
@DhavalRaval:我实际上不想写信给应用程序
.plist,而是使用.plist作为应用程序使用的字典的模板。该应用程序也是一个内部工具,AppStore 中不提供。
标签: objective-c macos plist nsmutabledictionary