2015-01-05 15 views
7

Làm việc trên Công cụ Dòng lệnh, tôi đang cố truy xuất đường dẫn của danh sách các từ được lưu trữ trong tệp có tên words.txt. Tệp được thêm vào dự án, được bao gồm trong thành viên mục tiêu của dự án và được chọn để sao chép trong giai đoạn tạo tệp sao chép của mục tiêu. Bên trong Main.swift mã này:pathForResource trả về nil trong Ứng dụng Bảng điều khiển Mac OS X - Swift

if let path = NSBundle.mainBundle().pathForResource("words", ofType: "txt") { 
    println("Path is \(path)") 
} else { 
    println("Could not find path") 
} 

in "Không thể tìm thấy đường dẫn". Lớp mainBundle() có hoạt động đúng gói để truy cập không? Bất kỳ suy nghĩ về lý do tại sao hàm pathForResource trả về nil?

Trả lời

27

Để sử dụng các gói có công cụ dòng lệnh bạn cần đảm bảo bạn đang thêm các tệp tài nguyên như một phần của giai đoạn xây dựng. Nghe có vẻ như bạn đánh giá cao điều này, nhưng đã không thực hiện nó một cách chính xác. Sau đây đã làm việc cho tôi trong một ứng dụng demo nhanh:

  1. Thêm tài nguyên vào dự án của bạn.

enter image description here

  1. Chọn hồ sơ dự án trong navigator dự án.

enter image description here

  1. Thêm một bản sao mới tập giai đoạn.

enter image description here

  1. Để giai đoạn bạn thêm vào trong bước 3, thêm các tập tin từ bước 1. Bạn thực hiện việc này bằng cách nhấp vào nút + (khoanh tròn) và sau đó điều hướng đến tệp được đề cập.

enter image description here


Khi bạn xây dựng dự án, bây giờ bạn sẽ có thể truy cập vào con đường của tập tin sử dụng NSBundle.

import Foundation 

let bundle = NSBundle.mainBundle() 
let path = bundle.pathForResource("numbers", ofType: "txt") 

if let p = path { 
    let string = NSString(contentsOfFile: p, 
     encoding: NSUTF8StringEncoding, 
     error: nil) 
    println(string) 
} else { 
    println("Could not find path") 
} 

// Output -> Optional(I am the numbers file.) 
+0

Xin cảm ơn đặc biệt của bạn rất nhiều – ashokdy

3

Công cụ dòng lệnh không sử dụng nhóm, chúng chỉ là tệp thực thi thô và không tương thích với giai đoạn xây dựng tệp sao chép hoặc lớp NSBundle.

Bạn sẽ phải lưu trữ tệp ở nơi khác (ví dụ: ~/Library/Application Support).

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