[英]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.