2014-10-31 1 views
0

내 앱에서 plist 파일을 iCloud에 업로드 할 수있는 옵션이 있습니다. 앱을 삭제하고 다시 설치하면 콘텐츠가 유지되어야합니다. 이것은 내가 시도한 것이며 iCloud에서 업로드/검색하는 데 문제가 없습니다. 클라우드에서 NSData로 plist 세부 정보를 얻습니다. 이제 문제는 이미이 데이터를 내 plist에 다시 쓰는 것입니다.xcode에 기존 데이터로 plist 작성하기

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

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

나는 NSData로 클라우드의 plist 내용을 가져오고 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> 

이 오래된 콘텐츠를 다시 쓰는 동안 문제가 있습니다. 그 내용을 비어있는이 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

관련 문제