【问题标题】:Read values from localized file iOS从本地化文件 iOS 中读取值
【发布时间】:2016-10-10 07:31:19
【问题描述】:

我创建了一个本地化字符串文件,其中包含键/值对中的错误消息。我只想像 Plist 一样基于键读取值。

这是我的本地化文件的内容

"SERVICE_ERROR" = "Some error occurred while processing your request, Please try later";

这就是我在用户首选项中保存此字符串的方式

[ErrorManager setLastErrorInPreferences:NSLocalizedString(@"SERVICE_ERROR", nil)];

这里是 setLastErrorInPreferences 方法

+ (void)setLastErrorInPreferences:(id)errorString {
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    NSDate *now = [NSDate date];
    NSString *errorStringWithTime = [NSString stringWithFormat:@"On %@:\n%@", now, errorString];
    [prefs setObject:errorStringWithTime forKey:KlastError];
}  

但它不起作用。它只是按原样保存密钥。它没有反映此键在用户首选项中的价值。请让我知道我缺少什么。

【问题讨论】:

  • 您的本地化文件中是否只有一行,请检查您输入的最后一个分号以及所有键的"key"="value"; 格式。您显示的错误通常是由于无效的本地化文件而出现的。所以再检查一遍
  • 不,还有许多其他字符串。我已经检查过了。所有行都有 ;在字符串的末尾。
  • @aqsaarshad 显示您的setLastErrorInPreferences 和您的班级ErrorManager。还要确保文件名应该是Localizable.strings
  • @Rajan 现在工作正常。我的错。我使用的是自定义名称,而不是默认的“Localizable.string”名称。
  • 非常感谢 :) 感激(Y)

标签: ios iphone localizable.strings


【解决方案1】:

我假设您有一个 Localizable.strings 文件。没有其他名称可以使用。

更改您的可本地化文件的内容
"SERVICE_ERROR" = "Some error occurred while processing your request, Please try later";

SERVICE_ERROR = "Some error occurred while processing your request, Please try later";

(从您的 SERVICE_ERROR 键中删除“”,并在末尾保留一个分号;

还显示您的setLastErrorInPreferences 在做什么?

用法

NSString* error = NSLocalizedString(@"SERVICE_ERROR", nil);   
NSLog(@"%@",error);

效果很好。

我的文件

编辑

获取错误值。在您的 ErrorManager 类中创建一些方法并从那里获取它,因为 kLastError 在您的 Controller 类中不可用。

NSString* yourError = [[NSUserDefaults standardUserDefaults] stringForKey:KlastError];

【讨论】:

  • 我试过不加引号还是不行。
  • @aqsaarshad 显示您的setLastErrorInPreferences 代码
  • + (void)setLastErrorInPreferences:(id)errorString { NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; NSDate *now = [NSDate 日期]; NSString *errorStringWithTime = [NSString stringWithFormat:@"On %@:\n%@", now, errorString]; [首选 setObject:errorStringWithTime forKey:KlastError]; }
  • @aqsaarshad 也显示您的ErrorManager 课程。有问题的编辑
  • @aqsaarshad 它工作正常,您还需要从您的 NSUserDefaults 键中获取值。检查编辑
猜你喜欢
  • 2012-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-22
  • 1970-01-01
  • 2022-11-17
  • 2021-03-18
  • 1970-01-01
相关资源
最近更新 更多