2012-06-12 36 views
7

Tôi đã thử:Làm thế nào để bạn có được đường dẫn đến máy tính để bàn người dùng trong XCode?

path = @"~/Desktop/files/text.plist"; 
NSDictionary *aDict = [NSDictionary dictionaryWithContentsOfFile:path]; 

ResultPath: ~/Desktop/files/text.plist

path = @"$(HOME)/Desktop/files/text.plist"; 
NSDictionary *aDict = [NSDictionary dictionaryWithContentsOfFile:path]; 

ResultPath: $ (HOME) /Desktop/files/text.plist

path = [NSHomeDirectory() stringByAppendingString:@"/Desktop/files/text.plist"]; 
NSDictionary *aDict = [NSDictionary dictionaryWithContentsOfFile:path]; 

ResultPath:/Người dùng/my_name/Library/Hỗ trợ ứng dụng/iPhone Simulator/5.1/Applications/639DC66A-7092-4ECB-9E48-59935AC1C394/Desktop/files/text.plist

  1. Có cách nào để truy cập đường dẫn trên màn hình của Người dùng trong XCode không?
  2. Các biến môi trường có thể được sử dụng trong ví dụ trên và cách thực hiện?

EDIT: Giải thích thêm về câu hỏi thứ hai: Giống như có biến môi trường (hoặc Macro) trong bảng điều khiển MAC, chúng cũng có thể được sử dụng trong mã không? Nếu chúng có thể được sử dụng, bất kỳ ai có thể giúp đỡ với một ví dụ? như $ HOME_DIRECTORY hoặc một cái gì đó tương tự.

+2

Có vẻ như bạn đang viết một ứng dụng iOS. Không có máy tính để bàn trong iOS, vì vậy tôi không chắc chắn những gì bạn đang mong đợi để có được ở đây! – duskwuff

+3

Tôi không thực sự thấy làm thế nào điều này có liên quan đến Xcode ở tất cả ... –

+1

@ duskwuff tôi đang viết một ứng dụng iOS đó sẽ được chạy trong giả lập * chỉ * (có, có ứng dụng như môi trường thử nghiệm đó nghĩ). Như vậy tôi cần phải có được đường dẫn đến Desktop của người dùng trên máy Mac. –

Trả lời

21

Bạn có thể chỉ định các máy tính để bàn trong con đường tìm kiếm:

NSArray * paths = NSSearchPathForDirectoriesInDomains (NSDesktopDirectory, NSUserDomainMask, YES); 
NSString * desktopPath = [paths objectAtIndex:0]; 

Ưu điểm của làm nó theo cách này là nó làm cho không có giả định về cách thức người dùng đã định cấu hình máy Mac của mình, Nếu thư mục trên máy tính để bàn của anh ấy không ở vị trí mặc định, điều này vẫn sẽ tìm thấy đúng.

+0

Chỉ cần FYI, cho iOS 8 và Xcode 6, Apple dường như đã thay đổi một vài điều và điều này mang lại một đường dẫn không tồn tại và không phải là máy tính để bàn của người dùng Mac: '/ Users/username/Library/Developer/CoreSimulator/Devices/C4BE4D04-304E-44EF-8665-B2DF0AE75EBC/data/Containers/Dữ liệu/Ứng dụng/167E7298-E774-4CFF-B252-F61AC60E9027/Desktop' – newenglander

+0

@newenglander Đó là vì không có khái niệm thực tế về thư mục 'Desktop' trên thiết bị iOS vì hệ thống tệp hộp cát. Ứng dụng đang chạy trên trình mô phỏng, vì vậy nó đang hiển thị phiên bản Trình mô phỏng của Máy tính để bàn. Hãy thử chạy cùng một mã trên một thiết bị thực tế và thử đặt một tệp vào thư mục "Máy tính để bàn" này. Lưu ý thông báo lỗi. – Abizern

-2

này nên làm điều đó cho # 1 câu hỏi của bạn:

NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString* documentsDirectoryPath = [paths objectAtIndex:0]; 

bạn có thể giải thích câu hỏi thứ hai của bạn hơn nữa? :)

+0

Câu trả lời này dường như không hoạt động. Nó mang lại cho tôi con đường giống như tùy chọn thứ ba tôi đã thử ở trên. –

+0

Tôi đã chỉnh sửa giải thích phần thứ hai –

+3

Thư mục tài liệu ≠ thư mục máy tính để bàn –

1

này nên làm việc:

NSString *pathToDesktop = [NSString stringWithFormat:@"/Users/%@/Desktop/text.txt", NSUserName()]; 
+0

cảm ơn một triệu. công trinh. –

+0

Điều này giả định thư mục Desktop nằm ở một nơi cụ thể. Người dùng có thể thay đổi nó, và sau đó điều này sẽ phá vỡ. – Abizern

+0

@Abizern - Bạn có thể di chuyển Desktop sang vị trí khác, nhưng sẽ luôn có một bí danh cho nó nằm ở/Users/your_name/Desktop, vì vậy phương pháp này sẽ vẫn hoạt động. – pasawaya

1

Tôi sử dụng câu lệnh này, nó giả định rằng thư mục Desktop nằm ở vị trí thông thường.

[NSURL fileURLWithPath:[NSHomeDirectory()stringByAppendingPathComponent:@"Desktop"]; 
Các vấn đề liên quan