ios - NSDictionary 应用程序崩溃

标签 ios objective-c sdk nsdictionary

尝试读取 plist 并根据在以下设置包中选择的选项更改我的字体颜色。 enter image description here

以下是我尝试完成它的方式:

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/

相关文章:

ios - 如何用一个动画删除所有子 UIViewController 的动画?

ios - 如何使用 SpriteKit 根据点击来上下移动球?

ios - Autolayout UIImageView 具有不遵循约束的编程调整大小

ios - 当我在 xCode 5 中验证我的应用程序时,出现错误的广告标识符 [IDFA] 使用情况

android - 如何在 Android MusicKit 上创建 Apple MediaPlayerController

Android Verilook 嵌入式 SDK 集成

Android AddThis sdk + Facebook sdk 不会在 Android Studio 中构建

ios - 复制过程中包含应用程序符号和剥离调试符号之间的区别?

iphone - UISwipeGestureRecognizer 无需触摸

iphone - 从客户端发送推送通知