2011-08-10 21 views
5

Yazmakta olduğum iPad uygulamasıyla gerçekten çok tuhaf bir sorun yaşıyorum. Başlangıçta, uygulama paketinden Belgeler dizinine birkaç başka klasör (boş olan) içeren bir klasörü kopyalamak istiyorum. Kopyalanacak klasör, 'flds' (tüm küçük harf) olarak adlandırılan Xcode 4 projesine 'Eklenen klasörler için klasör referansları oluştur' kullanılarak eklendi ve derlendikten sonra aslında .app dosyasının bir parçası olduğunu kontrol ettim. (Ve zaten var olmadığını kopyalamaya çalışırken.)NSBundle klasörü aygıtta bulunamadı, ancak simülatörde çalışıyor

Ben bu çağrılardan biri (onlar tüm çalışmaları) kullanarak 'flds' klasörüne alma denedim: Sonra

[[[NSBundle mainBundle] bundleURL] URLByAppendingPathComponent:@"flds"] 
[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"flds"] 
[[NSBundle mainBundle] pathForResource:@"flds" ofType:@""] 

NSFileManager'ın copyItemAtPath:toPath:error: yöntemini (veya yol dizesi yerine URL'yi kullanırken URL eşdeğerini) kullanarak kopyalama.

Tüm bu stratejiler, iPad Simulator ve iPad aygıtında aşağıdaki istisnalar dışında mükemmel çalışır: Ad Hoc dağıtımı için (başarılı bir şekilde) oluşturduğumda, .app ve .mobileprovision'u iTunes'a sürükleyin, sonra eşitleyin ve ardından uygulamayı cihazda çalıştırdığınızda, sistem artık 'flds' klasörünün mevcut olmadığını düşünüyor! Bunu birkaç saat boyunca, şanssız olarak incelemeye çalışıyorum. Yine, hem simülatörde hem de Xcode'dan çalışan cihazda çalıştığından, ancak iTunes ile senkronize edilmediğinden eminim.

Fikirler?

[[NSBundle mainBundle] pathForResource:@"flds" ofType:nil inDirectory:nil] 

Ancak, Belgeler dizininde yeni konumuna klasör kopyalamak için bu yolu kullanırken:

aşağıdaki çağrı iTunes ile iPad uygulamasını senkronize edildikten sonra da başarıyla klasör yolunu alır keşfetti Sadece klasörün kendisi ve içindeki .txt dosyası (ki burada bir test olarak koydum, orada olması gerekmiyordu) kopyalandı ve 6-7 boş alt klasörü değil. Yine, aynı kalıp kendini gösterir: Xcode ('test.txt' ile 'flds' klasörü ve boş alt klasörleri başarıyla kopyalanır) 'den çalışan simülatör ve aygıt üzerinde beklendiği gibi çalışır, ancak iTunes ile eşzamanlandığında (yalnızca' flds 'klasörü) 'test.txt' ile kopyalanır, alt klasör değil). Bu gerçekten copyItemAtPath:toPath:error:'un amaçlanmış davranışı mı? Ve iTunes üzerinden senkronize edildikten sonra neden farklı davrandı?

+0

Bunu denediyseniz emin değilim, ancak uygulamanın sağ tıklatıp Paketi Göster'i seçerek dosyanın son sürümde (iTunes'a sürüklediğiniz .app) klasörün bulunup bulunmadığını kontrol ettiniz mi? İçindekiler? Oraya erişmeye çalıştığınız dosya ve klasörleri bulucu aracılığıyla bulmanız gerekir. – Mark

+0

Bunu denedim. Klasör kesinlikle orada. Ayrıca bir .txt dosyasını 'flds' alt klasörlerinden birine yerleştirmeyi ve pathForResource: ofType: yoluyla erişmeyi denedim ve aslında işe yarıyor. Klasörün kendisi almıyor. – hsdev

+0

Lütfen cihazda olmayan bir dosya kullanıp kullanmadığınızı kontrol edin. Belki de bilgisayarınıza kaydedilmiş bir dosyayı kullanmayı denediniz. Emin değilseniz, projenizi başka bir bilgisayardan açmayı deneyin ve çalışıp çalışmadığını görün. – Sagiftw

cevap

0

Sonunda, bunun olması gerektiğini düşündüğüm halde, copyItemAtPath:toPath:error: boş klasörleri kopyalamayacağımı anladım. Ve yine, bu davranış sadece uygulamayı iTunes üzerinden iPad'e senkronize ettikten sonra ortaya çıktı (Xcode'dan çalışırken boş klasörleri kopyaladı). Şu anki çözümüm, her alt klasöre bir kukla metin dosyası koymak, böylece artık boş değiller.

İlgili konular