2011-11-14 94 views
22

我想將Do not back up設置爲Document Directory中的我的文件夾。iOS 5.0.1:如何驗證該文件夾是否標記爲iCloud的「不備份」?

我發現代碼爲​​3210,但我如何驗證該文件夾是否被標記。

+0

您是否得到了應有的工作?我也在爲文檔中的目錄嘗試類似的東西。我們必須爲目錄下的所有文件執行此操作嗎? – applefreak

+0

@AppleDeveloper:是的,如果你不想備份iCloud,你必須標記你的目錄。我試過這個。但正在等待蘋果的評論。 – Devang

+0

很酷。我也在等待蘋果的評論。我已經在http://stackoverflow.com/questions/8209755/iphone-move-resources-to-application-bundle上給出了我的代碼。如果您發現任何問題,請告訴我。謝謝。 – applefreak

回答

12

根據您鏈接的文檔,如果您將該方法設置爲該頁面上列出的方法,該方法將返回YES(如果該屬性標記正確)。

+0

好的。但是從我發現的文檔'重要:新的「不備份」屬性只會被iOS 5.0.1或更高版本使用。在iOS 5.0及更早版本中,應用程序需要將其數據存儲在/Library/Caches中以避免其備份。由於此屬性在舊系統上被忽略,因此您需要確保您的應用符合您的應用支持的所有iOS版本的iOS數據存儲指南。「因此,我需要將我的文件夾位置更改爲庫以供Apple審批。 – Devang

+3

您的應用可以檢查操作系統版本並執行相應的操作。 – hotpaw2

+0

如果我錯了,請糾正我。看起來有三種情況:Pre 5.0,5.0和5.0.1。對於5.0.1,您可以將文件夾標記爲「離線數據」。在5.0中,iCloud存在,但沒有「不備份」解決方案,因此您必須將數據放入庫/緩存中,它將被清除:(在Pre 5.0中沒有iCloud,並且AFAIK數據不會從數據庫或緩存中清除,所以將數據放入緩存也是安全的 – Michael

10

運行在模擬器上的應用程序,然後使用終端運行對相關文件的命令:

xattr -plxv com.apple.MobileBackup <file name> 
+0

謝謝,是什麼?它是我的應用姓名?或者是什麼 ? –

+0

xattr對於iOS模擬器中的文件始終不會返回任何內容。是否意味着沒有「擴展屬性」? – gmlvsv

21

對於iOS 5.1,運行在模擬器上的應用程序,並在終端中運行以下命令:

xattr {filename} 

您應該看到下面,如果該項目被正確標記排除:

com.apple.metadata:com_apple_backup_excludeItem 
+1

這是正確的答案,實際驗證 – Dev

+1

如果我將「不備份」屬性應用於目錄,其上的文件將不會同步?因爲我將它應用到一個文件夾(../Library/Folder/file),當我使用「xattr ../Library/Folder」時,「com.apple.metadata:com_apple_backup_excludeItem」出現,但是當我使用「xattr。 ./Library/Folder/file「它不。 – tomidelucca

11
  1. 打開模擬器
  2. 刪除的應用(該應用程序審查小組通過運行代碼1次,所以要確保你是從頭開始)
  3. 現在在模擬器中運行你的代碼,你的代碼將您的文件存儲在您的硬盤。
  4. 開拓終端
  5. CD /用戶/(用戶名)/庫/應用程序支持/ iPhone模擬器/(IOS版本)/應用
  6. LS
  7. 你將與隨機文件夾名稱的列表呈現,打開每一個,直到你找到你的應用文件夾
  8. for $(find *);做du -sk $文件; xattr -l $文件;回聲;做
  9. 你將所有的文件呈現在應用程序中的格式..

    (文件大小)(文件名)
    (iCloud雲備份除外)

注意:如果沒有列出,這意味着該文件將被備份(如果它在Library或Documents文件夾中)..如果您看到'com.apple.metadata:com_apple_backup_excludeItem:com.apple.MobileBackup',那麼您很好。

+0

當我這樣做時,我看到'com.apple.MobileBackup:'而不是'com.apple.metadata:com_apple_backup_excludeItem:com.apple.MobileBackup'。這是否意味着國旗沒有正確設置?我只是使用這裏提供的方法來設置標誌:https://developer.apple.com/library/ios/#qa/qa1719/_index.html – jonydep

+0

xattr總是不會返回任何文件從iOS模擬器..是否它意味着沒有'擴展屬性'? – gmlvsv

2

對於iOS 5.1或更高版本,此代碼適用於我。

- (BOOL)addSkipBackupAttributeToItemAtPath:(NSString *)filePathString { 
     NSURL *fileURL = 
     [NSURL fileURLWithPath:filePathString]; 

     assert([[NSFileManager defaultManager] 
     fileExistsAtPath: [fileURL path]]); 

     NSError *error = nil; 

     BOOL success = [fileURL setResourceValue:[NSNumber numberWithBool:YES] 
             forKey:NSURLIsExcludedFromBackupKey 
            error:&error]; 
     return success; 
    } 
+0

哪裏應該使用這個代碼?在appDelegate.m?或者是什麼 ? –

+1

@ Mc.Lover你可以在應用程序的任何位置編寫此代碼。 –

+0

主動程序員我把appDelegate放到了蘋果上,但蘋果再次拒絕了!這很奇怪,我只是用[NSbundle mainBundle]加載文件;我不存儲任何東西!你能幫我解決這個問題嗎? –