【问题标题】:Multiple parameters in NSURL objectNSURL 对象中的多个参数
【发布时间】:2009-05-27 13:45:53
【问题描述】:

我想将多个参数从 iphone sdk 传递到与 mySQL 数据库接口的服务器端 php。

我找到了一些有关如何执行此操作的答案,但我很难弄清楚如何包含多个参数。

我现在拥有的是


- (IBAction)sendButtonPressed:(id)sender
{
    NSString *urlstr = [[NSString alloc] initWithFormat:@"http://server.com/file.php?date=%d", theDate];
    NSURL *url = [[NSURL alloc] initWithString:urlstr];

    [urlstr release];
    [url release];
}

这适用于 1 个参数,但我正在寻找的是类似于

http://server.com/file.php?date=value&time=value&category=value&tags=value&entry=value

我该怎么做呢?

【问题讨论】:

    标签: iphone nsstring nsurl


    【解决方案1】:

    - initWithFormat 方法采用格式字符串的多个参数。

    所以你可以这样做:

      NSString *urlstr = [[NSString alloc] initWithFormat:@"http://server.com/file.php?date=%d&second=%d&third=%d", theDate, 2, thirdIVar];
    

    - initWithFormat 的工作方式与printf() 及其变体几乎相同。

    这里有一些printf() 的例子http://stahlforce.com/dev/index.php?tool=csc02

    编辑:变量nameField, tagsField, dreamEntry在哪里定义和设置?

    除非它们是NSStrings 并在@interface 中定义,否则您不能以这种方式使用它们。

    我建议对一些值进行硬编码以进行测试:

        NSString *urlstr = [[NSString alloc] initWithFormat:@"http://server.com/file.php?date=%@&time=%@&name=%@&category=%d&tags=%@&entry=%@", nil, nil, @"Name", nil, @"Tags", @"Dream"];
    

    【讨论】:

      【解决方案2】:

      创建 NSURL 不会打开与服务器的通信。它只是一个用于保存 URL 的数据结构。你想阅读NSURLConnection

      您在格式中传递的所有变量都是数字吗? %d 是数字的占位符; %@ 是一个对象。如果您期望一个数字,即使出于测试目的,传递 nil 也是非常令人惊讶的。它会“工作”,因为 nil 为 0,但它表明这些不是真正的数字。

      【讨论】:

      • 考虑到在这种情况下,通信应该只能单向工作...... iphone 不会从服务器取回数据,它只是发送它,这可能缺少什么工作?我相应地切换了占位符,感谢您的提醒。
      • 创建一个 NSURL 就像创建一个 NSString。它不会导致它在任何地方输出。您仍然需要连接到服务器。这就是 NSURLConnection 所做的。即使你不想要任何数据,你也会得到一些东西。至少您希望获得 HTTP/200,对吧?
      猜你喜欢
      • 1970-01-01
      • 2010-10-22
      • 2012-10-08
      • 2022-10-04
      • 1970-01-01
      • 2013-02-11
      • 1970-01-01
      • 2013-07-08
      • 2012-10-01
      相关资源
      最近更新 更多