沒有更多的上下文很難說,但一般來說,您可以使用一個變量來跟蹤您之前是否保存過當前的coverPage
,並且只是避免重新保存它。例如:
-(IBAction)saveImage:(id)sender{
NSLog(@"calling save");
if (coverPageAlreadySaved) {
UIAlertView *alertView =[[UIAlertView alloc] initWithTitle:@"Alert" message:@"Silly user, you already saved this image." delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK",nil];
[alertView show];
[alertView release];
}
else if (coverPage !=nil) {
NSData * imageData = UIImagePNGRepresentation(coverPage);
UIImage *theImage = [UIImage imageWithData:imageData];
UIImageWriteToSavedPhotosAlbum(theImage, self, nil, nil);
coverPageAlreadySaved = YES;
}
else {
UIAlertView *alertView =[[UIAlertView alloc] initWithTitle:@"Alert" message:@"Image is nil" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK",nil];
[alertView show];
[alertView release];
}
}
...只是一定要設置coverPageAlreadySaved = NO
每當coverPage
改變(無論你碰巧做,在你的代碼)。
或者,既然你已經有了對nil
檢查,你可以只是做:
-(IBAction)saveImage:(id)sender{
NSLog(@"calling save");
if (coverPage !=nil) {
NSData * imageData = UIImagePNGRepresentation(coverPage);
UIImage *theImage = [UIImage imageWithData:imageData];
UIImageWriteToSavedPhotosAlbum(theImage, self, nil, nil);
coverPage = nil;
}
else {
UIAlertView *alertView =[[UIAlertView alloc] initWithTitle:@"Alert" message:@"Image is nil" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK",nil];
[alertView show];
[alertView release];
}
}
...這將防止圖像被重新保存,直到它被在你的代碼別的地方更新(在這一點上,我認爲它算作一個新的coverPage
)。
'黑暗'的一面是,如果用戶直接從_Photo Library_中刪除圖像,應用程序將不會收到有關更新存儲值的任何通知。 – holex