Objective c 如何将常量字符连接到常量字符?

Objective c 如何将常量字符连接到常量字符?,objective-c,cocoa-touch,nsstring,string-concatenation,Objective C,Cocoa Touch,Nsstring,String Concatenation,我需要建立一个包含其他常量字符的常量字符字符串 const char *sql = ""; const char *sqlBuild = ""; for(int i=0; i < ac_count; ++i) { if (![sqlBuild isEqualToString:@""]) { sqlBuild = [sqlBuild stringByAppendingString: [NSString stringWithUTF8String:@" U

我需要建立一个包含其他
常量字符的
常量字符
字符串

const char *sql = "";
const char *sqlBuild = "";

for(int i=0; i < ac_count; ++i) {

  if (![sqlBuild isEqualToString:@""]) {
     sqlBuild = [sqlBuild stringByAppendingString:
           [NSString stringWithUTF8String:@" UNION "]];
  }
  sql = [[NSString stringWithFormat:
      @"select sum(price) from tmp%d  where due >= date() and due <= '%@'",  
            i, strDBDate] cStringUsingEncoding:NSUTF8StringEncoding];

  sqlBuild = [sqlBuild stringByAppendingString:
       [NSString stringWithUTF8String:sql]];
}

//execute sql

sqlBuild
声明为
NSMutableString
,并使用它来构建字符串:

NSMutableString *sqlBuild = [NSMutableString string];
for (...) {
    [sqlBuild appendString:...];
}

sqlBuild
声明为
NSMutableString
,并使用它来构建字符串:

NSMutableString *sqlBuild = [NSMutableString string];
for (...) {
    [sqlBuild appendString:...];
}

从UTF8字符串转换到UTF8字符串没有任何好处;在NSString中执行所有操作并在最后将其转换为C样式的字符串将更加高效。
@“d”
语法的计算结果也是对象,而不是C样式的字符串

因此,您应该简化并更正代码,以便:

NSMutableString *sqlStatement = [NSMutableString string];

for(int i=0; i < ac_count; ++i) {

  if ([sqlStatement length])  [sqlStatement appendString:@" UNION "];

  [sqlStatement appendFormat:
      @"select sum(price) from tmp%d  where due >= date() and due <= '%@'",  
            i, strDBDate];

}

// execute SQL string [sqlStatement UTF8String]
NSMutableString*sqlStatement=[NSMutableString];
对于(int i=0;i@“从tmp%d中选择sum(price),其中due>=date()和due转换为UTF8字符串和从UTF8字符串转换为UTF8字符串没有任何好处;在NSString中执行所有操作并在末尾将其转换为C样式字符串将更为有效。
@“d”
语法也计算为对象,而不是C样式字符串

因此,您应该简化并更正代码,以便:

NSMutableString *sqlStatement = [NSMutableString string];

for(int i=0; i < ac_count; ++i) {

  if ([sqlStatement length])  [sqlStatement appendString:@" UNION "];

  [sqlStatement appendFormat:
      @"select sum(price) from tmp%d  where due >= date() and due <= '%@'",  
            i, strDBDate];

}

// execute SQL string [sqlStatement UTF8String]
NSMutableString*sqlStatement=[NSMutableString];
对于(int i=0;i@“从tmp%d中选择sum(price),其中due>=date(),due我使用的是sqlite,请参见上文,它不喜欢NSStrings,这就是为什么我说执行[sqlStatement UTF8String],它返回C样式字符串。我使用的是sqlite,请参见上文,它不喜欢NSStrings,这就是为什么我说执行[sqlStatement UTF8String],它返回C样式字符串。