stringWithFormat:数据类型未知

发布于 2024-09-25 12:49:36 字数 650 浏览 6 评论 0原文

我正在制作一个框架,并且有以下代码(conditions 是 NSDictionary):

for (NSString *key in conditions) {
    id value = [[conditions valueForKey:key] retain];


    // Check if number or string
    if ([value class] == [NSString class]) {
      conditionsString = [NSString stringWithFormat:@"%@='%@' ", key, value];
    } else {
      conditionsString = [NSString stringWithFormat:@"%@=%@ ", key, value];
    }
  }

如果 value 是 NSString,则应添加引号,否则不应添加代码。但是,如果不是 NSString,我不知道 value 的数据类型,因为它可能是 NSNumber、NSInteger、int、float、double 等...我不能只使用 %@%d 但我确信有人知道如何做到这一点?谢谢。

I am making a framework and I have this code (conditions is an NSDictionary):

for (NSString *key in conditions) {
    id value = [[conditions valueForKey:key] retain];


    // Check if number or string
    if ([value class] == [NSString class]) {
      conditionsString = [NSString stringWithFormat:@"%@='%@' ", key, value];
    } else {
      conditionsString = [NSString stringWithFormat:@"%@=%@ ", key, value];
    }
  }

If the value is an NSString, quotes should be added, otherwise codes should not be added. However, if not an NSString, I don't know the datatype of value, as it could be NSNumber, NSInteger, int, float, double, etc... I can't just use %@ or %d but I'm sure someone on SO knows how to do this? Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

提笔落墨 2024-10-02 12:49:36

看看这个

编辑:在你的情况下这很简单,因为 nsdictionary 只能包含 nsobjects。所以 %@ 就可以了。

have a look at this.

edit: in your case it's pretty easy, since nsdictionary can only contain nsobjects. so %@ would do the trick.

驱逐舰岛风号 2024-10-02 12:49:36

您可以检查类(kindOfClass),然后使用适当的格式化程序。

例如

if ( [myObj isKindOfClass:[NSString class]] )

You could check the class (kindOfClass) and then use appropriate formatter.

e.g.

if ( [myObj isKindOfClass:[NSString class]] )
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文