我从UIImagePickerController获取UIIimage,并保存它,如下所示:
- (void) saveImageLocally:(UIImage *)image {
NSData *imageData = UIImagePNGRepresentation(image);
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *imagePath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.png",@"A5UserAvatar"]];
if (![imageData writeToFile:imagePath atomically:NO])
{
NSLog(@"Failed to cache image data to disk");
}
else
{
NSLog(@"the cachedImagedPath is %@", imagePath);
[[NSUserDefaults standardUserDefaults] setObject:imagePath forKey:@"AvatarKey"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
}
我可以立即访问它,没有问题,如下所示:
- (UIImage *) getLocalImage {
NSString *path = [[NSUserDefaults standardUserDefaults] stringForKey:@"AvatarKey"];
NSLog(@"PATH FOR IMAGE IS %@", path);
if (path != nil) {
return [UIImage imageWithContentsOfFile:path];
} else {
return [UIImage imageNamed:@"default.gif"];
}
}
上面的代码返回保存的UImage完全没有问题。
事情是,当我杀了应用程序并重新启动它,它的图像没有找到!我目前正在使用Xcode6构建iOS7和8。我知道这个问题在模拟器中是不可避免的,但我也在一个现场设备上体验过。
(见Xcode 6每次运行后都会在iOS8模拟器中不断重命名我的应用程序的目录。)
我想知道我做错了什么,或者是否有另一种方法,只是将任何图像作为文件存储在应用程序中,以便像头像一样使用。
问题是您保存的是完整路径,而不是相对于Documents文件夹的路径。您不能保存完整路径,因为应用程序路径可以更改。
你想要这样的东西:
- (void) saveImageLocally:(UIImage *)image {
NSData *imageData = UIImagePNGRepresentation(image);
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filename = [NSString stringWithFormat:@"%@.png",@"A5UserAvatar"];
NSString *imagePath = [documentsDirectory stringByAppendingPathComponent:filename];
if (![imageData writeToFile:imagePath atomically:NO])
{
NSLog(@"Failed to cache image data to disk");
}
else
{
NSLog(@"the cachedImagedPath is %@", imagePath);
[[NSUserDefaults standardUserDefaults] setObject:filename forKey:@"AvatarKey"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
}
- (UIImage *) getLocalImage {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filename = [[NSUserDefaults standardUserDefaults] stringForKey:@"AvatarKey"];
NSString *path = [documentsDirectory stringByAppendingPathComponent:filename];
NSLog(@"PATH FOR IMAGE IS %@", path);
if (path != nil) {
return [UIImage imageWithContentsOfFile:path];
} else {
return [UIImage imageNamed:@"default.gif"];
}
}
问题内容: 我想使用gprof来分析守护程序。我的守护程序使用第3方库,通过该库注册一些回调,然后调用一个永不返回的函数。我需要调用(SIGTERM或SIGKILL)终止守护程序。不幸的是,gprof的手册页显示以下内容: 被分析的程序必须调用“ exit”(2)或正常返回,以将分析信息保存在gmon.out文件中。 有没有办法为使用SIGTERM或SIGKILL杀死的进程保存概要分析信息? 问题
问题内容: 我的项目目录结构如下(我认为这很标准): 我将py.test用于我的测试框架,并且希望能够在目录中运行我的测试时运行。在我尝试在测试中使用(例如)导入应用程序代码之前,这确实可行。那时,我收到错误“没有名为mypkg的模块”。经过一些调查,似乎使用测试文件的目录运行而 不是从中运行目录的情况下运行测试。 为了解决此问题,我向目录中添加了一个文件,其中包含以下代码: 这似乎可行,但这是确
我是WebSphere的新手。已经安装了带有单个配置文件的WebSphere8.5服务器。并且安装并启用了JDK7(因为WebSphere8.5默认附带JDK6)。最后,安装了应用程序。但是已安装的应用程序在“已安装的应用程序”目录中没有得到更新。 但是,应用程序安装在C:\websphere85\appserver\profiles\appsrv01中 不知道它在哪里覆盖了这条路径。请帮帮忙。提
...有点。正如这个极其简单的例子所示, 我的一个应用程序很少以这种方式崩溃(到目前为止只报告过一次)。当一个不确定的异常发生时,我想像往常一样终止它。我的策略是(低级)记录问题,然后终止。应用程序是子系统的一部分,如果检测到任何问题,我想(重新)启动它。它是用C -Builder 6构建的,在Windows (XP)上运行...7,也是8)。我了解到< code>abort()很可能导致了这个错
文件当前将转到:
问题内容: 如何检查文件目录中是否存在文件? 我正在使用将图像保存到Documents目录中的方法,并且每次启动应用程序时都想加载它。但是,如果没有保存的图像,我将使用默认图像。 但是我只是无法理解如何使用该功能。有人可以举一个使用传递路径参数的函数的例子。 我相信我不需要在其中粘贴任何代码,因为这是一个通用问题。任何帮助都感激不尽。 干杯 问题答案: Swift 4.x 版本 Swift 3.x