使用 NSUserDefaults 时格式字符串未使用 Objective-C iOS 10 数据参数

Posted

技术标签:

【中文标题】使用 NSUserDefaults 时格式字符串未使用 Objective-C iOS 10 数据参数【英文标题】:Objective-C iOS 10 Data argument not used by format string when using NSUserDefaults 【发布时间】:2016-12-19 12:38:45 【问题描述】:

当我想将它转换为 Xcode 8 时,我有适用于 ios 8 的工作代码给我该行警告

格式字符串未使用数据参数

我的代码清楚为什么给出这个警告?

 NSString *name1 =[[NSUserDefaults standardUserDefaults] stringForKey:@"name1"];
    NSString *name2 =[[NSUserDefaults standardUserDefaults] stringForKey:@"name2"];
    username  =  [NSString stringWithFormat:@"%@%@", @"", name1,name2];

哪里会出错?

【问题讨论】:

%@%@ => 两个参数,@"" 计为一,name1 计为一,name2 计为一。所以它在等待 2 个参数,然后你放了 3 个。 【参考方案1】:

您传递 3 个参数而不是 2 个参数的问题,错误或不小心添加了 @"" 作为第一个格式说明符,所以这里 name2 是格式说明符的额外参数,这就是您收到此警告的原因。

应该是:

username  =  [NSString stringWithFormat:@"%@%@", name1,name2];

代替

username  =  [NSString stringWithFormat:@"%@%@", @"", name1,name2];

【讨论】:

@SwiftDeveloper 欢迎朋友 :)

以上是关于使用 NSUserDefaults 时格式字符串未使用 Objective-C iOS 10 数据参数的主要内容,如果未能解决你的问题,请参考以下文章

XCTest:在 UI 测试类的 NSUserdefaults 中未检索到值

对于项目中未使用的 NSUserDefaults 键,对象不能为 nil

XCTest:UI测试类中的NSUserdefaults中未检索到的值

UIPickerView 不会显示从 NSUserDefaults 加载的数据 - 加载数据时应用程序崩溃

在模拟器上卸载应用程序后,NSUserDefaults未清除

如何从 NSUserDefaults 中检索数据?