ios - iphone - 应用程序崩溃的形式

标签 ios forms nsstring

在我的应用程序中,我有一个用户必须填写表单的 View 。但是,有时应用程序在这里崩溃,在这个函数中,那个简单的 cath 值字段并构建一个 url 给

-(NSString*)urlToUpload{

    NSString *string1 =[[NSString alloc]init];
    string1= [NSString stringWithFormat:@"?nombre="];
    NSString *string2 =  [string1 stringByAppendingString:nameAdded];

//crash here

    NSString *string3 =  [string2 stringByAppendingString:@"&horario="];
    NSString *string4 =  [string3 stringByAppendingString:horarioAdded];


    NSString *string5 =  [string4 stringByAppendingString:@"&info="];
    NSString *string6 =  [string5 stringByAppendingString:infoAdded];

    NSString *string7 =  [string6 stringByAppendingString:@"&offerta="];
    NSString *string8 =  [string7 stringByAppendingString:offertaAdded];

    NSString *lat_string = [[[NSString alloc] initWithFormat:@"%f",locationToUpload2.latitude] autorelease];
    NSString *lon_string = [[[NSString alloc] initWithFormat:@"%f",locationToUpload2.longitude] autorelease];

    NSString *string9 =  [string8 stringByAppendingString:@"&latitude="];
    NSString *string10 =  [string9 stringByAppendingString:lat_string];

    NSString *string11 =  [string10 stringByAppendingString:@"&longitude="];
    NSString *string12 =  [string11 stringByAppendingString:lon_string];


    NSString *url1 = [NSString stringWithFormat:@"http://myserverside/mysql_up.php"];

    NSString *url =  [url1 stringByAppendingString:string12];



    return url;
}

编辑:

当 textField 中有空白时,似乎问题出现在 nameAdded 上(即 MisterB 没有崩溃,Mister B 是)。 但我正在使用:

nameAdded =[[nameField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

NSLOg 给的 nameAdded 是 Mister%20B。

崩溃仍然出现...

最佳答案

只需使用一个stringWithFormat::

- (NSString *)urlToUpload {
    NSString *url = [NSString stringWithFormat:@"http://myserverside/mysql_up.php?nombre=%@&horario=%@&info=%@&offerta=%@&latitude=%f&longitude=%f",
       [nameAdded stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],
       [horarioAdded stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],
       [infoAdded stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],
       [offertaAdded stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],
       locationToUpload2.latitude, locationToUpload2.longitude];

    return url;
}

确保引用的变量有效。

在您的原始代码中,无需分配/初始化 NSString 然后将另一个字符串分配给同一变量。这是内存泄漏 (string1)。

如果你真的想按照你拥有的方式构建你的代码,至少使用一个 NSMutableString 并附加到那个可变字符串。创建十几个 NSString 变量是错误的做法。

更新:确保添加到 URL 的每个字符串都正确转义。

关于ios - iphone - 应用程序崩溃的形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16846845/

相关文章:

android - PhoneGap : diagnostic plugin is not working in iphone

ios - 如何通过滑动行来显示在自定义 tableview 单元格内创建的 View ?

iOS - plist.info 变为空白

ios - 查找两个逗号分隔的NSMutableString之间的差异

java - 如何使用 HttpURLConnection 与网站交互?

iphone - 我们需要释放常量吗?

objective-c - 将 NSString 转换为 NSNumber 会导致数字过多和奇怪的舍入

javascript - 使用 javascript 在标签中写入值

javascript - 如何在 jQuery 中验证表单中的空输入框

ios - 合成的 getter 不适用于 NSString 类型的实例变量