2014-10-31 4 views
0

У меня есть возможность загрузить файл plist в iCloud в моем приложении. Когда приложение удаляется и устанавливается обратно, содержимое должно сохраняться. Это то, что я пытался, и у меня нет проблем с загрузкой/извлечением из iCloud. Я получаю детали plist как NSData из облака. Теперь проблема в том, что у меня есть записи этих данных на мой plist уже существует.Написание plist с существующими данными в xcode

NSArray *paths   = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES); 

NSString *documentsDir = [paths objectAtIndex:0]; 
NSString *root   = [documentsDir stringByAppendingPathComponent:@"Receipts.plist"]; 

Я получаю содержимое plist из облака как NSData и после преобразования в NSString это то, что я получаю.

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<array> 
    <dict> 
     <key>Amount</key> 
     <string>USD 1500.00</string> 
     <key>Category</key> 
     <string></string> 
     <key>Currency</key> 
     <string>USD</string> 
     <key>Date</key> 
     <string>Thu 30 Oct,2014</string> 
     <key>DateSort</key> 
     <string>2014/10/30</string> 
     <key>Merchant</key> 
     <string></string> 
     <key>Payment</key> 
     <string></string> 
     <key>Purpose</key> 
     <string>-</string> 
     <key>SubCategory</key> 
     <string></string> 
     <key>TimeStamp</key> 
     <string>Thu 30 Oct,2014 14:42:47</string> 
     <key>Tips</key> 
     <string>0.00</string> 
     <key>UDDate1</key> 
     <string>Thu 30 Oct,2014</string> 
     <key>UDDate2</key> 
     <string>Thu 30 Oct,2014</string> 
     <key>UDNumber1</key> 
     <string>0.00</string> 
     <key>UDNumber2</key> 
     <string>0.00</string> 
     <key>UDNumber3</key> 
     <string>0.00</string> 
     <key>UDText1</key> 
     <string>-</string> 
     <key>UDText2</key> 
     <string>-</string> 
     <key>UDText3</key> 
     <string>-</string> 
     <key>Uploaded</key> 
     <string>upload</string> 
     <key>Value</key> 
     <string>0</string> 
    </dict> 
</array> 
</plist> 

Я нахожу проблему при записи этого старого контента назад. Как написать это содержимое обратно на этот слой, который пуст?

+0

Я не понимаю. Можете ли вы объяснить, что вам нужно? – user3182143

+0

Вышеупомянутая деталь plist извлекается из iCloud. Мне нужно написать это в моем plist, который существует уже после удаления и повторной установки приложения. @ user3182143 –

+0

Вы хотите просто проверить, существует ли plist или нет? – user3182143

ответ

0

Это может быть полезно. Ваш plist - массив, поэтому сохраните массив в файл.

//read from file 
NSArray *array = [NSArray arrayWithContentsOfFile:root]; 
//wirte to file 
NSArray *sourceArray = [NSArray arrayWithContentsOfFile:filePath]; 
BOOL success = [sourceArray writeToFile:root atomically:YES]; 
+0

NSData * fileData = documentData; -> plist контент из облака здесь. Я конвертирую это в строку, и я добавляю к «arrayWithContentsOfFile». Но не повезло! –

+0

Как вы сохранили файл и как вы загрузили файл в iCloud? – gabbler

+0

Вы можете попробовать [этот пример] (https://www.dropbox.com/s/9imb0n10vnhmzlx/PlistTest.zip?dl=0) – gabbler

Смежные вопросы