Sau khi tìm kiếm qua nhiều câu hỏi về sân chơi nhanh chóng nhiều ngay cả thủ công mã này, tôi vẫn đang vật lộn.Đọc tập tin nhanh chóng, sân chơi iOS
Tôi đã đặt một tệp văn bản trong thư mục Resources
của nội dung gói và nó xuất hiện dưới dạng bí danh (liên kết) trong các tệp tạm thời đang chạy do sân chơi (/var/folders/ ...
) tạo.
import UIKit
let bundle = NSBundle.mainBundle()
let myFilePath = bundle.pathForResource("dict1", ofType: "txt")
println(myFilePath) // <-- this is correct, there is a shortcut to the Resource file at this location
var error:NSError?
var content = String(contentsOfFile:myFilePath!, encoding:NSUTF8StringEncoding, error: &error)
println(content!) // <-- this is *NOT* the file contents [EDIT: see later note]
// Demonstrate there's no error
if let theError = error {
print("\(theError.localizedDescription)")
} else {
print("No error")
}
Vấn đề là, rằng content
được hiển thị ở đầu ra sân chơi như là Some "apple\ngame\nhow\nswift\ntoken"
, chứ không phải là nội dung tập tin như mong đợi.
Đó là tìm tệp, bởi vì nếu tôi thay đổi tên tệp, lỗi đó sẽ bị lỗi. Bạn có lời khuyên nào về nội dung tập tin không?
Xcode 6.1
EDIT: Vì vậy, thực tế vấn đề là tôi đã không hy vọng đầu ra sân chơi (bao gồm, println
) để được thoát. Điều đó, kết hợp với sự mệt mỏi và những điều ngu ngốc khác đã khiến tôi tin rằng có một vấn đề, khi không tồn tại.
Điều thú vị là không phải mọi thứ dường như được thoát ở sân chơi:
println("foo\nbar") // Outputs "foo\nbar", escaped
println("\\n") // Outputs "\n", unescaped
Đó là mã làm việc ok cho tôi nếu tôi đặt một tập tin 'dict1.txt' vào vị trí thích hợp. Có gì trong tệp 'dict1.txt' của bạn và nó khác với những gì bạn thấy trong biến' content' của bạn? –
@MikeS, thật tuyệt vời khi câu hỏi đơn giản của bạn dẫn tôi đến câu trả lời (hiển nhiên). Có, tất nhiên 'nội dung' khớp với tệp. Tôi không bao giờ nên mã hóa mệt mỏi. Điều đã ném tôi ra là '' \ n'' đã thoát, khiến nội dung trông giống như một con đường. – alttag
Khi tôi đang học, đầu ra sân chơi của 'println'! = Đầu ra bàn điều khiển của' println'. Thông tin thêm trên bảng điều khiển [tại câu hỏi này] (http://stackoverflow.com/questions/24277848/how-to-reopen-console-output-in-a-swift-playground). – alttag