2012-07-03 33 views
21

Tôi tương đối mới trong Mục tiêu C nhưng không phải với lập trình. Tôi đã tự hỏi làm thế nào bạn có thể nối thêm một NSString lên một NSString khác. Tôi đang tạo một ứng dụng trong đó người dùng phải hoàn thành một câu cơ bản, và tôi đã tự hỏi làm thế nào để có được chuỗi người dùng đã nhập và gắn nó vào một cái hiện tại trên màn hình?Cách thêm NSString vào NSString khác

Trả lời

41

Tôi nghĩ bạn đang tìm kiếm hàm stringByAppendingString của NSString. Xem ví dụ bên dưới.

NSString *errorTag = @"Error: "; 
NSString *errorString = @"premature end of file."; 
NSString *errorMessage = [errorTag stringByAppendingString:errorString]; 

tạo chuỗi "Lỗi: kết thúc sớm của tệp".

+0

Cảm ơn rất nhiều! Ví dụ hoạt động tuyệt vời! :) –

13

Dường như bạn có câu trả lời của bạn, nhưng bạn cũng có thể sử dụng phương pháp stringWithFormat: như vậy:

NSString *sample1 = @"Hello"; 
NSString *sample2 = @"Being appended"; 

NSString *complete = [NSString stringWithFormat:@"%@%@", sample1, 
sample2]; 
31

này cũng có thể đạt được bằng cách sử dụng một NSMutableString:

NSMutableString *string = [NSMutableString stringWithString:@"String 1"]; 
[string appendString:@"String 2"]; 
+1

nếu bạn muốn nối thêm dữ liệu (nhiều chuỗi hơn) trong cùng một biến, thì 'NSMutableString' là giải pháp thực tế. 'stringByAppendingString' không thân thiện với bộ nhớ khi bạn muốn nối dữ liệu vào cùng một biến. – Ans

2

Bạn không thể thực sự nối thêm NSString với NSString khác bởi vì lớp NSString không thể thay đổi được. Tất cả các cấu trúc dữ liệu tiêu chuẩn có các giống biến đổi và không biến đổi được (NSMutableString và NSString, NSMutableArray và NSArray, v.v.). Nếu bạn muốn thay đổi nội dung mà không tái phân bổ một đối tượng mới, bạn sẽ muốn sử dụng phiên bản có thể thay đổi. Bạn có thể tạo một NSString mới sử dụng:

NSString* string3 = [NSString stringWithFormat:@"%@%@",string1,string2]; 

này có hại cho hiệu suất mặc dù, vì vậy nếu bạn đang đi để làm điều đó trong vòng một hoặc một số lĩnh vực nhạy cảm hoạt động (tức là bạn tiếp tục phụ thêm vào chuỗi lặp đi lặp một lần nữa) điều này được đảm bảo để gây ra cho bạn một vấn đề (tôi đã thực hiện sai lầm này trước).

Thay vào đó bạn có lẽ nên sử dụng NSMutableString và thêm chuỗi thứ hai với nó:

NSMutableString* string1 = [NSMutableString alloc] init]; 
[string1 appendString:string2];