2009-07-09 33 views
60

Tôi đang cố chuyển đổi từ chuỗi int thành chuỗi nhưng tôi gặp sự cố. Tôi theo sau việc thực hiện thông qua trình gỡ lỗi và chuỗi 'myT' nhận giá trị của 'tổng' nhưng câu lệnh if 'không hoạt động chính xác nếu' tổng 'là 10,11,12. Tôi có nên không sử dụng kiểu int nguyên thủy để lưu trữ số không? Ngoài ra, cả hai phương pháp tôi đã thử (xem mã nhận xét) không thực hiện theo đường dẫn đúng của câu lệnh 'if'. Cảm ơn!Cách chuyển đổi từ int thành chuỗi trong mục tiêu c: mã ví dụ

int x = [my1 intValue]; 
    int y = [my2 intValue]; 
    int sum = x+y; 
    //myT = [NSString stringWithFormat:@"%d", sum]; 
    myT = [[NSNumber numberWithInt:sum] stringValue]; 

    if([email protected]"10" || [email protected]"11" || [email protected]"12") 
     action = @"numGreaterThanNine"; 
+6

Có một lý do bạn đưa số nguyên vào một chuỗi? Sẽ dễ dàng hơn khi viết bài kiểm tra của bạn là 'if (sum> = 10 && sum <= 12)' – Alex

+1

Nếu câu trả lời làm bạn bối rối, hãy xem câu hỏi liên quan này: http://stackoverflow.com/questions/3414644/làm thế nào để chuyển đổi số nguyên-to-string-in-mục tiêu-c-đóng – Florin

Trả lời

30

Phiên bản nhận xét là cách chính xác hơn để thực hiện việc này.

Nếu bạn sử dụng toán tử == trên chuỗi, bạn đang so sánh địa chỉ của chuỗi (nơi chúng được phân bổ trong bộ nhớ) thay vì giá trị của chuỗi. Đây là rất thỉnh thoảng hữu ích (nó cho thấy bạn có đối tượng chính xác cùng string), nhưng 99% thời gian bạn muốn so sánh các giá trị, mà bạn làm như sau:

if([myT isEqualToString:@"10"] || [myT isEqualToString:@"11"] || [myT isEqualToString:@"12"]) 
+0

typo nhẹ, một mất tích: trong so sánh 2. – marcc

12

== không được sử dụng để so sánh các đối tượng trong if. Đối với NSString, hãy sử dụng isEqualToString: để so sánh chúng.

156

Nếu bạn chỉ cần một int để một chuỗi như bạn đề nghị, tôi đã tìm thấy cách dễ nhất là để làm như sau:

[NSString stringWithFormat:@"%d",numberYouAreTryingToConvert] 
6
int val1 = [textBox1.text integerValue]; 
int val2 = [textBox2.text integerValue]; 

int resultValue = val1 * val2; 

textBox3.text = [NSString stringWithFormat: @"%d", resultValue]; 
136

bạn có thể sử dụng literals, nó nhỏ gọn hơn.

NSString* myString = [@(17) stringValue]; 

(Hộp như một NSNumber và sử dụng phương pháp stringValue của nó)

+3

@RavindranathAkila - 'stringWithFormat' linh hoạt hơn/mạnh hơn và nên được sử dụng nói chung. Đây chỉ là một phím tắt nếu nó là một chuyển đổi đơn giản mà bạn đang theo đuổi. – Robert

+0

Cảm ơn. Thật vậy, tôi đã tìm kiếm một cách tiếp cận không dài dòng :-) –

3

Đơn giản chỉ cần chuyển đổi int để NSString sử dụng:

int x=10; 

    NSString *strX=[NSString stringWithFormat:@"%d",x]; 
Các vấn đề liên quan