尝试读取 plist 并根据在以下设置包中选择的选项更改我的字体颜色。
以下是我尝试完成它的方式:
NSString *path = @"/var/mobile/Library/Preferences/NCNotes.plist";
NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:path];
fontSize = [[dict objectForKey:@"slideSwitched"] floatValue];
if ([[dict objectForKey:@"noteColor"] valueForKey:@"Purple"]) {
noteView.textColor = [UIColor purpleColor];
} else {
noteView.textColor = [UIColor blackColor];
}
知道为什么这就是我的应用程序崩溃的原因吗?如何根据所选内容读取值并更改颜色?
最佳答案
看起来你的 plist 的顶层是一个数组,而不是字典,因为在顶部它说“Item 1”,你的所有内容都在其中。所以你在一个数组中有一个字典。所以你可以这样改变你的代码:
NSString *path = @"/var/mobile/Library/Preferences/NCNotes.plist";
NSArray *array = [[NSArray alloc] initWithContentsOfFile:path];
NSDictionary *dict = array[0];
您还可以更改 plist 的结构,以便将字典作为根而不是数组。
此外,键应该在左侧,它们的值在右侧,所以我没有看到键“noteColor”。您有一个值为“noteColor”的键“key”,因此您需要进行更正。我也没有看到“slideSwitched”键,尽管它可能就在您的屏幕截图范围之外。
以下也不起作用:
[[dict objectForKey:@"noteColor"] valueForKey:@"Purple"]
无论你从 [dict objectForKey:@"noteColor"]
得到什么都不会成为字典,所以调用 valueForKey:
不会成为字典给你你想要的。
关于ios - NSDictionary 应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21684063/