2017-02-18 21 views
5

Xin lỗi nếu đây là bản sao, nhưng tôi đã thử tìm kiếm xung quanh bao gồm cả String Format SpecifiersIEEE printf spec của Apple nhưng không thể tìm thấy câu trả lời cho nội dung đơn giản này.Chuỗi định dạng cho chuỗi hằng số trong Swift?

Tôi muốn in thông điệp os_log với trình định dạng chuỗi cho chuỗi liên tục. Một cái gì đó tương tự như:

printf("Currently at processing state: %s\n", "reading in"); 

trong C. Tuy nhiên, khi tôi đã cố gắng một cái gì đó như thế này trong Swift:

os_log("Currently at processing state: %s", log: .default, type: .info, "reading in") 

nó chỉ đơn giản in gì ra cả.

Làm cách nào để in hằng số chuỗi bằng cách sử dụng công cụ định dạng chuỗi? Tôi không chắc chắn làm thế nào để làm điều đó với NSLog hoặc.

Chỉnh sửa: os_log yêu cầu StaticString, do đó, nó không thể làm điều gì đó như "Something \(Expr) Something else" như trong print(). Bạn vẫn có thể sử dụng định dạng chuỗi để in các biến số. Tôi tự hỏi làm thế nào để in chuỗi hằng số/biến trong trường hợp này.

Chỉnh sửa 2: Apple thực sự có cuộc thảo luận về chủ đề này ngay trên manual page, mà tôi đã bỏ lỡ nó vì nó chỉ được thảo luận trong phiên bản API mục tiêu-C bây giờ.

+0

"something \\ (bất kỳ biểu thức nhanh) nào khác" –

Trả lời

5

Từ trang os_log người đàn ông:

Bạn cũng có thể sử dụng "% @" format specifier để sử dụng với obj-C/CF/Swift đối tượng

Trong trường hợp của bạn

import os.log 

os_log("Currently at processing state: %@", log: .default, type: .info, "reading in") 

hoạt động vì chuỗi Swift được bắc cầu đến NSString trên danh sách đối số biến số .

+0

Hoàn hảo! Cảm ơn bạn! – HuaTham

-2

này sẽ làm việc:

print("Currently at processing state: \(readingin)") 

Vì vậy, bạn đặt các tham số bạn muốn in cho readingin.

(Nếu đây giải quyết câu hỏi của bạn hãy đánh dấu nó như là câu trả lời)

+0

Tôi đang tìm câu trả lời cho 'os_log' yêu cầu định dạng chuỗi cho' StaticString' để in giá trị của biến. – HuaTham

Các vấn đề liên quan