2010-11-09 17 views
6

:ben şöyle ilgili kodudur projemde (Deck.txt) dahil bir metin dosyasına listesini yazmaya çalışıyorum

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Deck" ofType:@"txt"]; 
NSFileHandle *fileHandle = [NSFileHandle fileHandleForWritingAtPath:filePath]; 
deck = [[NSString alloc]initWithFormat: @"%@\n%@ %@",file, txtQuantity.text, cardName]; 
//[deck writeToFile:filePath atomically:YES encoding:NSStringEncodingConversionAllowLossy error:nil]; 
[fileHandle writeData:[deck dataUsingEncoding:NSUTF8StringEncoding]];     
[fileHandle closeFile]; 

Kodu çalıştırdığımda metin belgesine kaydetmeyecek, ya da en azından projeme dahil olanı kaydetmeyecek. Listeyi oluşturmaya ve yazmaya çalıştığım tüm verileri dosyadan okuyacaktır, ancak programı kapattığımda, metin belgesinde herhangi bir değişiklik yapılmamaktadır. Herhangi bir yardım en çok takdir edilecektir.

cevap

16

NSData örneğinizi zaten aldıysanız, verileri yalnızca aygıttaki yerleşik belge dizinine yazabilirsiniz. Arama biraz ile, kontrol etmek için simülatörden çalıştırıldığında yerini bulmak zor değil.

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *docDir = [paths objectAtIndex: 0]; 
NSString *docFile = [docDir stringByAppendingPathComponent: @"deck.txt"]; 

//your variable "deck" 
[deck writeToFile: docFile atomically: NO]; 

Bu, belgeler dizininizdeki bir dosyaya kesinlikle yazacaktır. Sadece dizini okumak için kodunuzu değiştirecek bir konu olmalıdır.

2

Paket yolunuzun içindeki dosyalara yazamazsınız. NSDocumentDirectory.

+0

Bağlantınız bu gönderiye geri gidiyor. – achi

+0

İşte. Sabit. ;-) –

2

kurulumu (örnek olarak) bu ile filepath:

NSString *filePath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/dt"]; 

sonra böyle veri depolamak:

[VARNAME writeToFile:filePath atomically:YES (or NO)]; 

Ben bunları daha basit gibi yapılabilir yapmaya çalışıyorsun ne düşünüyorsunuz bu.

İlgili konular