Vâng, có một vài vấn đề ở đây.
Đầu tiên (và không phải là câu hỏi mà bạn đã hỏi) là bạn đang phân bổ một NSMutableString mới và sau đó chỉ cần vứt nó đi trong dòng thứ hai khi bạn đặt nó thành someTextFieldIbOutlet.text. Ngoài ra, bạn đang truyền một chuỗi không thể thay đổi thành một chuỗi có thể thay đổi mà sẽ không thực sự hoạt động. Thay vào đó, kết hợp hai dòng đầu tiên như thế này:
NSMutableString* mStr = [NSMutableString stringWithString:someTextFieldIbOutlet.text];
Các lỗi thực tế rằng bạn đang nhận được gây ra bởi vì đối số đầu tiên để NSLog được coi là những "định dạng" chuỗi mà nói NSLog cách bạn muốn định dạng dữ liệu sau trong các đối số sau. Đây phải là một chuỗi chữ (được tạo ra như @"this is a literal string"
) để nó không thể được sử dụng để khai thác chương trình của bạn bằng cách thay đổi nó.
Thay vào đó, sử dụng này:
NSLog(@"%@", mStr);
Trong trường hợp này, chuỗi định dạng là @"%@"
có nghĩa là "Tạo một đối tượng NSString
thiết lập để %@
". %@
có nghĩa là đối số tiếp theo là đối tượng và thay thế %@
bằng mô tả của đối tượng (trong trường hợp này là giá trị của chuỗi).
Lỗi định dạng phát sinh do đối số của C không vượt qua loại an toàn. –