2014-05-01 117 views
0

我的應用程序被拒絕,因爲Apple發現在發佈和/或內容下載時,我的應用商店存儲了14.18 MB。iOS數據存儲拒絕

現在我試圖跳過備份遊戲中使用的所有圖像和聲音。

到目前爲止,我做了我的應用程序文件夾本身所謂的「資源」文件夾,這樣看:App Folder Scrshot

我AppDelegate.m所做的是未來:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    [self addSkipBackupAttributeToItemAtURL:[self applicationDocumentsDirectory]]; 
    return YES; 
} 

- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL 
{ 
    assert([[NSFileManager defaultManager] fileExistsAtPath: [URL path]]); 

    NSError *error = nil; 
    BOOL success = [URL setResourceValue: [NSNumber numberWithBool: YES] 
           forKey: NSURLIsExcludedFromBackupKey error: &error]; 
    if(!success){ 
     NSLog(@"Error excluding %@ from backup %@", [URL lastPathComponent], error); 
    } 
    return success; 
} 

這ISN」不工作。

我有2個問題:

1)我做從一開始就對了嗎?我是否應該將所有圖像和聲音放在名爲Resources的文件夾中,然後對整個文件夾使用skipBackup,或者我應該將它們放在其他位置? 如果是,那麼在哪裏?我在網上看到有人在談論「文檔」文件夾......但我不知道那個文件夾是什麼,也不知道在哪裏找到它

2)如果我可以把所有內容放在「Resources」文件夾中,我從代碼到達該文件夾?如何從Xcode本身製作該文件夾的URL?

在此先感謝

+0

我想你互聯網上看到了有關該文件的文件夾 - HTTP:/ /stackoverflow.com/questions/2709705/read-text-file-in-document-folder-iphone-sdk – Shruti

+0

從您的圖片中,「資源」是一個組而不是物理文件夾。向我們展示整個蘋果拒絕的原因,也許我們可以提供幫助。 – user523234

+0

這是他們的拒絕原因:https://www.dropbox.com/s/r48ymxvzhgsn5oc/Screenshot%202014-05-01%2014.02.50。png – SteBra

回答

0

您應該將內容與您的應用程序一起交付。由於連接問題,如果用戶在3G/Edge上,首次啓動時下載內容並不是一個好主意。

文檔目錄位於設備上,是您的應用程序下的一個文件夾,由ios自動創建。 Apple Documentation

從資源文件夾中獲取文件很容易files from resources

0

我以前有這個問題!問題不是你存儲的大小,它是,其中你存儲它。我的猜測是你的文件存儲在NSDocumentDirectory,這是不好的,因爲這個目錄應該只用於存儲用戶自己創建的數據(文檔,照片等)。僅添加NSURLIsExcludedFromBackupKey是不夠的。當它發生在我身上時,我將NSDocumentDirectory更改爲NSApplicationSupportDirectory,並且我的應用得到了批准。

UPDATE

這是最好的,如果你第一次在你的NSApplicationSupportDirectory創建一個子目錄來存儲你的文件存在。

你的方法看起來應該是這樣的:

- (NSURL *) applicationDocumentsDirectory{ 
    NSString *appSupportDir = [NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES) lastObject]; 
    appSupportDir = [appSupportDir stringByAppendingPathComponent:@"MyAppDirectory"]; 
    return [NSURL URLWithString:appSupportDir]; 
} 

而且不要忘記創建目錄第一:

if (![[NSFileManager defaultManager] fileExistsAtPath:[self applicationDocumentsDirectory] isDirectory:NULL]) { 
     NSError *error = nil;   
     [[NSFileManager defaultManager] createDirectoryAtPath:[self applicationDocumentsDirectory] withIntermediateDirectories:YES attributes:nil error:&error]; 
    } 
+0

嗨Emilie。我認爲我們在這裏的軌道上。 事情是,我從來沒有把任何東西放在任何地方..或者我從來沒有具體告訴程序在哪裏放什麼。所以我想這是使用一些默認值。 這是發佈到應用程序商店的第二個應用程序。第一個問題我沒有問題,他們幾乎完全相同。所以我從來沒有指定放哪些數據,但不知何故,我的第一個應用程序在iCloud上只存儲0.5mb,而這個存儲12Mb。 你能告訴我應該在哪裏指定哪些文件存儲在哪裏? 它在AppDelegate.m或其他地方?任何教程也可以做:) – SteBra

+0

@Stebra你可以發佈你的方法'[self applicationDocumentsDirectory]'的代碼嗎? – Emilie

+0

這是: - (NSURL *)applicationDocumentsDirectory { return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; } – SteBra