簡體   English   中英

如何在iPhone應用程序捆綁中保存多個文件?

[英]How to save multiple files in bundle in iphone app?

大家好,我正在嘗試將圖像保存在我目前查看的捆綁軟件中,但是問題是我只能保存一個圖像,如果我要保存另一個圖像,它將取代舊的圖像。然后將多個圖像保存在捆綁軟件中。 這是我的代碼。

- (void)writeImageToDocuments:(UIImage*)image 
{
    NSData  *png = UIImagePNGRepresentation(image); 
    NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSError *error = nil;
    [png writeToFile:[documentsDirectory stringByAppendingPathComponent:@"image.png"] options:NSAtomicWrite error:&error];


}

請幫助我,如何將多個圖像,文件等保存在捆綁包中

提前致謝

您沒有保存到捆綁軟件中,而是保存到了應用程序的文檔目錄中。 沒有捆綁方面。

您正在為每個保存的文件使用文件名@“ image.png”。 因此,每次新寫入都會覆蓋舊寫入。 實際上,每個文件寫入兩次。 要保存多個文件,請使用不同的文件名。

傳遞數字常量作為NSData writeToFile:options:error:的'options:'參數也是一種不好的形式(或者實際上是任何類似的情況)。 值“ 3”包含一個未定義的標志,因此您應該期待未定義的行為,Apple可以合法地拒絕批准您的應用程序。 可能您想保留NSAtomicWrite行並殺死其后的那一行。

如果您只是查找第一個未使用的image.png文件名,則最簡單的解決方案是:

int imageNumber = 0;
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *pathToFile;

do
{
    // increment the image we're considering
    imageNumber++;

    // get the new path to the file
    pathToFile = [documentsDirectory stringByAppendingPathComponent:
                                           [NSString stringWithFormat:
                                                    @"image%d.png", imageNumber]];
}
while([fileManager fileExistsAtPath:pathToFile]);
/* so, we loop for as long as we keep coming up with names that already exist */

[png writeToFile:pathToFile options:NSAtomicWrite error:&error];

這有一個潛在的弊端。 您嘗試的所有文件名都在自動釋放池中。 因此,它們將至少保留在內存中,直到此特定方法退出為止。 如果您最終嘗試了成千上萬種方法,那可能會成為一個問題-但這與答案沒有直接關系。

假設您總是添加新文件,但從未刪除文件,那么可以通過二進制搜索更好地解決此問題。

搜索的文件名將是image1.png,image2.png等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM