来自userDefaults的值不会填充URL查询字符串

时间:2012-10-22 15:56:56

标签: objective-c ios

我正在使用我的网络服务器上的.php文件工作来创建这个聊天应用程序,以将数据存储在SQL数据库中

到目前为止,这是我的代码:

#import "vtchatViewController.h"

@interface vtchatViewController ()

@end

@implementation vtchatViewController

@synthesize messageBox, messageView, Send, Refresh;


- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    NSString *usrName = [[NSUserDefaults standardUserDefaults] stringForKey:@"user_name"];

    NSURL *url = [NSURL URLWithString:@"http://server.com/ios/messages.php"];  [messageView loadRequest:[NSURLRequest requestWithURL:url]];

}

- (IBAction)refreshButton:(id)sender {
    NSURL *url = [NSURL URLWithString:@"http://server.com/ios/messages.php"];  [messageView loadRequest:[NSURLRequest requestWithURL:url]];

}

- (IBAction)sendButton:(id)sender {
    // server.com/ios/add.php?user=Username here&message=Message Her

    [messageBox resignFirstResponder];
    NSString* urlString = [[NSString stringWithFormat:@"http://server.com/ios/add.php?user=",usrName "&message=%@", messageBox.text] stringByAddingPercentEscapesUsingEncoding : NSUTF8StringEncoding];
    NSURL *add = [NSURL URLWithString:urlString];



    [messageView loadRequest:[NSURLRequest requestWithURL:add]];
    messageBox.Text = @"";


}



- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

然而,在“viewDidLoad”行中,我无法使用我的设置包中的用户名:

NSString* urlString = [[NSString stringWithFormat:@"http://server.com/ios/add.php?user=",usrName "&message=%@", messageBox.text] stringByAddingPercentEscapesUsingEncoding : NSUTF8StringEncoding];
NSURL *add = [NSURL URLWithString:urlString];

我收到错误“使用未声明的标识符'usrName'而且我也不知道我是否确实执行了”usrName“正确用于此

我只需要将数据发送到“server.com/ios/add.php”?数据应采用以下格式:“user = Username here& message = Message here”

如果我只是使用固定的用户名,我就可以使用了,但如上所述,我不知道如何使用存储在我的设置文件中的用户名

提前致谢

2 个答案:

答案 0 :(得分:3)

您需要使用字符串格式标记才能将用户名插入urlString变量,如下所示:

NSString* urlString = [[NSString stringWithFormat:@"http://server.com/ios/add.php?user=%@&message=%@", usrName, messageBox.text];

这应该可以帮助您理解为什么您的格式字符串不起作用以及您收到该错误的原因。我上面的代码没有转义usrNamemessageBox.text的值,因此您需要将这些值添加回代码中。

答案 1 :(得分:0)

你应该让你的userName变得像一个接口变量。

像那样:

@interface vtchatViewController () {
    NSString *usrName;
}

@end

@implementation vtchatViewController

- (void)viewDidLoad
{
    ...
    NSString *usrName = [[NSUserDefaults standardUserDefaults] stringForKey:@"user_name"];
    ...
}

@end