【问题标题】:Problem casting an int as a NSString将 int 转换为 NSString 的问题
【发布时间】:2010-12-03 04:29:17
【问题描述】:

我正在开发一个使用一些 url 的 iPhone 应用程序,并且在将整数附加到它们的末尾时遇到了困难。我有以下代码行

        NSURL *urlCards = [[NSURL alloc] initWithString:(@"http://website.edu/get_stuff/%@",[NSString stringWithFormat:@"%d",_stuffID])];

我只需要在末尾附加一个 int 即可。当我打印出 NSURL urlCards 的结果时,我只是得到了我传入的 int 的值,或者 _deckID 的值。

我已验证仅声明为本地 int 的 _deckID 在运行时确实具有正确的值。

我错过了什么?

谢谢!!

【问题讨论】:

    标签: iphone nsstring append nsurl stringwithformat


    【解决方案1】:

    您遇到的是逗号运算符。逗号运算符评估其每个操作数的副作用,并评估最后一个表达式的结果。例如:

    int i;
    int j;
    int z;
    
    z = (i = 4, j = 3, i + j);
    // z is now 7
    

    你在这里得到了什么:

    (@"http://website.edu/get_stuff/%@",[NSString stringWithFormat:@"%d",_stuffID])
    

    评估为刚刚

    [NSString stringWithFormat:@"%d", _stuffID]
    

    这是因为第一部分@"..."是一个没有副作用的表达式,逗号运算符的结果是[NSString stringWithFormat:]方法的结果。

    我想你在找什么,是这样的:

    NSString *urlString = [NSString stringWithFormat:@"http://website.edu/get_stuff/%d",_stuffID];
    NSURL *urlCards = [[NSURL alloc] initWithString:urlString];
    

    你也可以像 KingofBliss 的回答一样,一行行完成。

    【讨论】:

      【解决方案2】:
      NSString *urlString=[NSString stringWithFormat:@"http://website.edu/get_stuff/%d",_stuffID];
      NSURL *urlCards = [[NSURL alloc] initWithString:urlString];
      

      使用它可以解决您的问题。

      【讨论】:

        【解决方案3】:

        你为什么不能这样尝试:

        NSURL *urlCards = [[NSURL alloc] initWithString:[NSString stringWithFormat:@"http://website.edu/get_stuff/%d",_stuffID]];
        

        【讨论】:

          猜你喜欢
          • 2011-10-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-04-30
          • 2012-08-10
          • 2010-11-25
          • 2012-08-22
          • 1970-01-01
          相关资源
          最近更新 更多