2011-06-10 18 views
13

numaralı belgeye kaydetme Bu iletide bulunan kodu kullanıyorum: Mulitple Arrays From Plist, aynı plist formatıyla.NSDictionary dosyasını

Bu, başarılı bir şekilde çalışıyor ancak oluşturulan dizileri aynı biçimde bir plist'e nasıl geri yükleyeceğimi bilmiyorum.

Bu nasıl elde ki?

DÜZENLEME: İhtiyacım olan bu kadar tasarruf değil, kaydedilecek verilerin oluşturulması.
Pist, dizeleri ve bunlara karşılık gelen anahtarları olan bir dizi sözlüktir. Belirli bir anahtara sahip tüm dizeler kendi dizilerine eklenir.

Bu diziyi, kurtarmaya hazır, sözlük dizisinde doğru konumlara nasıl yerleştiririm?

NSDictionary* dict = ...; 
[dict writeToFile:@"..." atomically:YES]; 

-writeToFile:atomically: belgelerine bakınız:

cevap

14

myPlistFile.plist'u oluşturmayı ve uygulama kaynak klasörünüze eklemeyi unutmayın.

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

burada yolları tarama ve döngü kullanarak myPlistFile.plist arayabilirsiniz.

NSString *plistPath = [documentsDirectory stringByAppendingPathComponent:@"myPlistFile.plist"]; 
if (![[NSFileManager defaultManager] fileExistsAtPath: plistPath]) 
{ 
      NSString *bundle = [[NSBundle mainBundle] pathForResource:@"myPlistFile" ofType:@"plist"]; 
      [[NSFileManager defaultManager] copyItemAtPath:bundle toPath:plistPath error:&error]; 
} 
[myDict writeToFile:plistPath atomically: YES]; 
+1

bu işe yaramaz çünkü mainBundle salt okunurdur –

+0

@Ashley Staggs: Güncellenmiş yanıtı kontrol edin. – Jhaliya

+0

Nerede kaydedeceğimi biliyorum, ancak şu anda doğru olması gereken biçimlendirme –

22

İşte en basit yoludur.

+0

ben bu dosyayı kaydetmek biliyorum, ama bu işe PLIST oluşan diziler geri dönecek sanmıyorum array-> dictionary-> string –

+6

aynı şekilde denediniz mi? Bir plisten okunabilecek her şeye bir yazı yazabilir. Verileri sözlükte sipariş etme şeklinizi değiştirmedikçe, tam olarak aynı şekilde yazmalıdır. –

+1

** En önemlisi ** - Bu yöntem, tüm içerilen nesnelerin özellik listesi nesneleri (NSData'nın, NSDate'in, NSNumber'in, NSString'in, NSArray'ın veya "NSDictionary" örneklerinin) olduğunu yinelemeli olarak doğrular. Dosyayı yazmadan önce ve tüm nesneler özellik listesi nesnesi değilse, 'NO' döndürür, sonuçta oluşan dosya geçerli bir özellik listesi olmaz. – enadun

0

Ve tersine, bir dosyadan GELEN bir NSDictionary yüklemek için:

+ (id)dictionaryWithContentsOfFile:(NSString *)path; 
İlgili konular