2011-08-15 38 views
10

Tôi là một anh chàng java đến với Objective-C. Trong java, để thêm biến vào chuỗi, bạn phải làm điều gì đó dọc theo các dòng:Nối chuỗi với biến

someString = "This string is equal to " + someNumber + "."; 

Tôi không thể tìm ra cách thực hiện nó trong Objective-C. Tôi có một số NSMutableString mà tôi muốn thêm vào giữa một chuỗi. Làm thế nào để tôi làm việc này?

Tôi đã thử:

NSString *someText = @"Lorem ipsum " + someMutableString; 
NSString *someText = @"Lorem ipsum " + [someMutableString stringForm]; 

và một vài thứ khác, không ai trong số đó có vẻ làm việc. Đồng thời hoán đổi cho nhau + s với , s.

Trả lời

27

Bạn có thể sử dụng appendString:, nhưng nhìn chung, tôi thích:

NSString *someText = [NSString stringWithFormat: @"Lorem ipsum %@", someMutableString]; 
NSString *someString = [NSString stringWithFormat: @"This is string is equal to %d.", someInt]; 
NSString *someOtherString = [NSString stringWithFormat: @"This is string is equal to %@.", someNSNumber]; 

hoặc, cách khác:

NSString *someOtherString = [NSString stringWithFormat: @"This is string is equal to %d.", [someNSNumber intValue]]; 

vv ...

Các chuỗi được autoreleased, vì vậy chăm sóc không mất giá trị của họ. Nếu cần, hãy giữ lại hoặc sao chép và tự giải phóng chúng sau này.

9

Hãy thử điều này:

NSMutableString * string1 = [[NSMutableString alloc] initWithString:@"this is my string"]; 

[string1 appendString:@" with more strings attached"]; 

//release when done 
[string1 release]; 
6

Bạn cần phải sử dụng stringByAppendingString

NSString* string = [[NSString alloc] initWithString:@"some string"]; 
string = [string stringByAppendingString:@" Sweet!"]; 

Đừng quên [string release]; khi thực hiện xong bạn tất nhiên.

+1

Quản lý bộ nhớ của bạn bị rối loạn. Đó là chuỗi ban đầu được tạo bởi 'alloc' mà bạn cần để giải phóng, nhưng bạn đang ném nó đi (rò rỉ nó) và thay thế nó bằng kết quả của' stringByAppendingString: ', mà không nên được phát hành. – Chuck

+0

Tôi nhận ra rằng tôi có thể bị nhầm lẫn bởi quản lý bộ nhớ ở đây, nhưng không phải là câu lệnh thứ 2 của tôi trỏ tới cùng một khối bộ nhớ, trong đó tôi chỉ gán giá trị cho giá trị hiện có cộng với chuỗi được nối thêm? – Trevor

+1

Không, đó là hai đối tượng khác nhau khác nhau ở hai vị trí bộ nhớ khác nhau. NSStrings đồng bằng không thể thay đổi giá trị của chúng, vì vậy 'stringByAppendingString:' trả về một chuỗi mới với giá trị của chuỗi ban đầu cộng với giá trị nối thêm. – Chuck

0
NSMutableString *string = [[NSMutableString alloc] init]; 

[string appendFormat:@"more text %@", object ]; 
Các vấn đề liên quan