2012-06-12 10 views
7

denedim:XCode'da kullanıcı masaüstüne nasıl yollanırsınız?

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

ResultPath: ~/Masaüstü/files/text.plist

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

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

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

ResultPath:/Users/my_name/Kitaplık/Uygulama Desteği/iPhone Simulator/5.1/Uygulamalar/639DC66A-7092-4ECB-9E48-59935AC1C394/Masaüstü/dosyalar/text.plist

  1. XCode'da kullanıcının masaüstü yoluna ulaşmanın bir yolu var mı?
  2. Yukarıdaki örnekte ortam değişkenleri kullanılabilir mi ve nasıl?

DÜZENLEME: MAC konsolunda ortam değişkenleri (veya makrolar) vardır gibi, bunlar da kod içinde kullanılabilir: 2 soru üzerine ayrıntılı açıklama mı? Kullanılabilirlerse, herhangi bir örnek ile yardımcı olabilir misiniz? $ HOME_DIRECTORY gibi bir şey.

+2

Bir iOS uygulaması yazıyormuşsunuz gibi görünüyor. IOS'ta masaüstü yok, bu yüzden buraya gelmeyi umduğunuzdan emin değilim! – duskwuff

+3

Gerçekten bunun Xcode ile ilgili olduğunu göremiyorum… –

+1

@duskwuff Sadece simülatörde * çalıştırılmak üzere bir iOS uygulaması yazıyorum * (evet, bu düşünce test ortamları gibi uygulamalar var). Bu şekilde Mac’te kullanıcının masaüstüne giden yolu bulmam gerekiyor. –

cevap

21

Sen arama yolunda masaüstü belirtebilirsiniz:

NSArray * paths = NSSearchPathForDirectoriesInDomains (NSDesktopDirectory, NSUserDomainMask, YES); 
NSString * desktopPath = [paths objectAtIndex:0]; 
bu şekilde yapmanın avantajı konusunda herhangi bir varsayımda bulunmamaktadır olmasıdır

kullanıcı Mac'sini yapılandırdı, Masaüstü klasörü varsayılan konumda değilse, bu hala doğru olanı bulacak.

+0

'dan beri çalışmıyor Sadece FYI, iOS 8 ve Xcode 6 için, Apple bir kaç şeyi değiştirmiş görünüyor ve bu, olmayan ve Mac kullanıcılarının masaüstünde olmayan bir yol sunuyor: '/ Users/username/Kitaplık/Geliştirici/CoreSimulator/Aygıtlar/C4BE4D04-304E-44EF-8665-B2DF0AE75EBC/data/Containers/Data/Application/167E7298-E774-4CFF-B252-F61AC60E9027/Desktop' – newenglander

+0

@newenglander Bu, gerçek bir kavram olmadığı için Korumalı dosya sistemi nedeniyle bir iOS cihazında bir 'Desktop' klasörü. Uygulama simülatörde çalışıyor, bu yüzden simülatörün Desktop sürümünü gösteriyor. Aynı kodu gerçek bir cihazda çalıştırmayı deneyin ve bu "Masaüstü" klasörüne bir dosya eklemeyi deneyin. Hata mesajını not edin. – Abizern

-2

Bu 1. soru için bunu yapmak gerekir:

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

daha da ikinci soru açıklayabilir misiniz? :)

+0

Bu cevap işe yaramıyor gibi görünüyor. Yukarıda denediğim üçüncü seçenekle aynı yolu veriyor. –

+0

İkinci bölümü açıklayan bir düzenleme yaptım –

+3

Belgeler klasörü ≠ masaüstü klasörü –

1

Bu çalışması gerekir:

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

bir mil teşekkürler. Eserleri. –

+0

Bu, Masaüstü klasörünün belirli bir yerde bulunduğunu varsayar. Kullanıcı bunu değiştirebilir ve bu daha sonra bozulur. – Abizern

+0

@Abizern - Masaüstünü başka bir konuma taşıyabilirsiniz, ancak her zaman/Users/your_name/Desktop'da bulunan bir takma ad olacaktır, bu nedenle bu yöntem çalışmaya devam edecektir. – pasawaya

1

Bu ifadeyi kullanıyorum, Desktop klasörünün normal konumda olduğunu varsayar.

[NSURL fileURLWithPath:[NSHomeDirectory()stringByAppendingPathComponent:@"Desktop"]; 
İlgili konular