2011-02-11 22 views
6

Bir uygulama olarak, yerleşik notlar uygulamasına benzer bir uygulama yazmaya çalışıyorum.
Ancak dosyasını dosyasını nasıl kaydedeceğimi ve UITableView numaralı belgede görüntüleyemiyorum.
Şu anda, kullanıcının yazabileceği bir UITextView var. Ayrıca kaydetmek düğmesini.
Kullanıcı kaydetme düğmesine dokunduğunda, onu kaydetmek istiyorum ve daha sonra bir tablo görünümünde görüntüledim.
Çok kayıdım, dolayısıyla ilgili herhangi bir öğretici vb. Biliyorsanız, çok takdir edilecektir.iPhone üzerinde metin dosyaları yazma ve okuma

+1

muhtemelen duymak istemiyorum bir cevap olduğunu var edebilmek istiyorsanız "Yapma metin dosyalarını kullan ". Bazı seri hale getirme stratejilerine (plist) bir göz atabilirsiniz. – hanno

+1

@hanno - Ayrıca, plisten daha da iyi olanı ekleyeceğim, Çekirdek Verileri kullanıyorum. Hızlı, verimli ve daha da önemlisi, * ölçeklenebilir *. –

cevap

23

Gerçek dünyadaki yorumcular tarafından belirtildiği gibi, kesinlikle Temel Verilere veya başka bir veri kalıcılık stratejisine bakmak isteyeceksiniz. Eğer bir öğrenme deneyimi olarak bu takip ölü seti iseniz, böyle bir şey sorunu çözmek gerekir:

- (void)writeStringToFile:(NSString*)aString { 

    // Build the path, and create if needed. 
    NSString* filePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
    NSString* fileName = @"myTextFile.txt"; 
    NSString* fileAtPath = [filePath stringByAppendingPathComponent:fileName]; 

    if (![[NSFileManager defaultManager] fileExistsAtPath:fileAtPath]) { 
     [[NSFileManager defaultManager] createFileAtPath:fileAtPath contents:nil attributes:nil]; 
    } 

    // The main act... 
    [[aString dataUsingEncoding:NSUTF8StringEncoding] writeToFile:fileAtPath atomically:NO]; 
} 

- (NSString*)readStringFromFile { 

    // Build the path... 
    NSString* filePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
    NSString* fileName = @"myTextFile.txt"; 
    NSString* fileAtPath = [filePath stringByAppendingPathComponent:fileName]; 

    // The main act... 
    return [[[NSString alloc] initWithData:[NSData dataWithContentsOfFile:fileAtPath] encoding:NSUTF8StringEncoding] autorelease]; 
} 
+0

[NSString writeToFile] kullanmanın daha iyi midir (https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html)? –

+0

merhaba. Bu satırda hata ve çökme var: [[aString dataUsingEncoding: NSUTF8StringEncoding] writeToFile: fileAtPath atomik olarak: NO]; – kemdo

1

metni kaydetmek için en kolay yolu NSUserDefaults kullanıyor.

[[NSUserDefaults standardUserDefaults] setObject:theText forKey:@"SavedTextKey"]; 

ya, her "dosyasını" kullanıcı adı veya birden fazla dosya

NSMutableDictionary *saveTextDict = [[[[NSUserDefaults standardUserDefaults] objectForKey:@"SavedTextKey"] mutableCopy] autorelease]; 
if (saveTextDict == nil) { 
    saveTextDict = [NSMutableDictionary dictionary]; 
} 

[saveTextDict setObject:theText forKey:fileName]; 
[[NSUserDefaults standardUserDefaults] setObject:saveTextDict forKey:@SavedTextKey"]; 
+0

İhtiyaç duyulan her şey hızlı ve kirli bir dize tasarrufu sağlıyorsa, kesinlikle plist yaklaşımına geçin. Ama eğer ölçek büyütecekseniz, kullanım kolaylığı tarafından sunulan günaha karşı durmaya çalışın. –