tags:

views:

19

answers:

2

Hello everyone

I have some codes read the query results from sqlite:

   while (sqlite3_step(statement) == SQLITE_ROW) {

      char *rowData = (char *)sqlite3_column_text(statement,0);


      NSString *fieldValue = [[NSString alloc]   initWithUTF8String :  rowData ];
      char  *rowData1 = (char *)sqlite3_column_text(statement,1);
      NSString *fieldValue1 = [[NSString alloc]   initWithUTF8String:rowData1];


      [fieldValue stringByAppendingString : fieldValue1];



      [fieldValue release];

I noticed that the code line:

[fieldValue stringByAppendingString : fieldValue1];

has no function, fieldValue1 has not appended on filedValue.

For example, fieldValue is 'aaa' fieldValue1 is 'bbb'

[fieldValue stringByAppendingString : fieldValue1] should return 'aaabbb'

but it returns 'aaa', looks like fieldValue1 has not appended on fieldValue

Welcome any comment.

Thanks

interdev

A: 

-stringByAppendingString appends string to the target and returns result. You should write

NSString *newString = [fieldValue stringByAppendingString : fieldValue1];

If you want to get new string "in-place" you should use NSMutableString and its -appendString method.

Vladimir
A: 

[fieldValue stringByAppendingString : fieldValue1] will just return a new NSString object with the concatenated string. However, you are not assigning the return value.

Try this:

NSMutableString *fieldValue = [[NSMutableString alloc]   initWithUTF8String :  rowData ];
char  *rowData1 = (char *)sqlite3_column_text(statement,1);
NSString *fieldValue1 = [[NSString alloc]   initWithUTF8String:rowData1];

[fieldValue appendString : fieldValue1];
Diederik Hoogenboom