将图像路径保存到 NSDocuments,然后将其作为 UIImage 检索
Save Image Path to NSDocuments then retrieve it as a UIImage
我有一个图像选择器控制器,可以将选定的图像存储到一个目录中。我能够很好地保存路径,但检索它们会导致崩溃。我不确定是要保存的代码错误还是要检索的代码错误。这是崩溃错误。
*** Terminating app due to uncaught exception
'NSInvalidArgumentException', reason: '-[__NSCFString size]: unrecognized
selector sent to instance 0x1c484bc40'
这是检索文件并存储在 NSMutableArray
中的代码。这就是崩溃发生的地方。我需要路径的结果是 UIImage
个文件。
- (void)loadCustomDesignGIFEdit:(TSPEventRepository *)record {
NSError *error = nil;
NSMutableArray *arrSlidshowImg = @[].mutableCopy;
NSString *Dir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES) objectAtIndex:0];
NSString *path = [NSString stringWithFormat:@"%@%@",Dir, @"/Images/"];
NSArray * directoryContents = [[NSFileManager defaultManager]
contentsOfDirectoryAtPath:path error:&error];
UIImage *image = [UIImage imageWithContentsOfFile:path];
for (image in directoryContents) {
[arrSlidshowImg addObject:image];
}
NSLog(@"ARRAY RESULT: %@", arrSlidshowImg);
fourBySixBackgroundImageViewGIF.image = [arrSlidshowImg objectAtIndex:0];
}
当我按下按钮调用 loadCustomDesignGIFEdit
时,日志显示我选择的图像的正确路径,但它崩溃了。我需要它将路径保存为具有 PNG 表示形式的图像到 NSMutableArray
.
这是日志结果:
ARRAY RESULT: (
"picName_IMG_7293.JPG",
"picName_IMG_7294.JPG"
)
有一行说:
UIImage *image = [UIImage imageWithContentsOfFile:path]
这没有意义,因为 path
是文件夹的路径,而不是任何特定图像的路径。
但是您的神秘错误源于以下代码行:
fourBySixBackgroundImageViewGIF.image = [arrSlidshowImg objectAtIndex:0];
不幸的是,arrSlidshowImg
是一个字符串数组,而不是图像数组。因此,当您将其作为 UIImageView
的 image
提供时,错误隐秘地告诉您它正在尝试检索 size
图像,但 NSString
您提供的没有这样的 method/property.
你的意思可能是:
NSString *filename = arrSlidshowImg[0];
NSString *imagePath = [path stringAppendingPathComponent:filename];
UIImage *image = [UIImage imageWithContentsOfFile:imagePath];
fourBySixBackgroundImageViewGIF.image = image;
我有一个图像选择器控制器,可以将选定的图像存储到一个目录中。我能够很好地保存路径,但检索它们会导致崩溃。我不确定是要保存的代码错误还是要检索的代码错误。这是崩溃错误。
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString size]: unrecognized selector sent to instance 0x1c484bc40'
这是检索文件并存储在 NSMutableArray
中的代码。这就是崩溃发生的地方。我需要路径的结果是 UIImage
个文件。
- (void)loadCustomDesignGIFEdit:(TSPEventRepository *)record {
NSError *error = nil;
NSMutableArray *arrSlidshowImg = @[].mutableCopy;
NSString *Dir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES) objectAtIndex:0];
NSString *path = [NSString stringWithFormat:@"%@%@",Dir, @"/Images/"];
NSArray * directoryContents = [[NSFileManager defaultManager]
contentsOfDirectoryAtPath:path error:&error];
UIImage *image = [UIImage imageWithContentsOfFile:path];
for (image in directoryContents) {
[arrSlidshowImg addObject:image];
}
NSLog(@"ARRAY RESULT: %@", arrSlidshowImg);
fourBySixBackgroundImageViewGIF.image = [arrSlidshowImg objectAtIndex:0];
}
当我按下按钮调用 loadCustomDesignGIFEdit
时,日志显示我选择的图像的正确路径,但它崩溃了。我需要它将路径保存为具有 PNG 表示形式的图像到 NSMutableArray
.
这是日志结果:
ARRAY RESULT: ( "picName_IMG_7293.JPG", "picName_IMG_7294.JPG" )
有一行说:
UIImage *image = [UIImage imageWithContentsOfFile:path]
这没有意义,因为 path
是文件夹的路径,而不是任何特定图像的路径。
但是您的神秘错误源于以下代码行:
fourBySixBackgroundImageViewGIF.image = [arrSlidshowImg objectAtIndex:0];
不幸的是,arrSlidshowImg
是一个字符串数组,而不是图像数组。因此,当您将其作为 UIImageView
的 image
提供时,错误隐秘地告诉您它正在尝试检索 size
图像,但 NSString
您提供的没有这样的 method/property.
你的意思可能是:
NSString *filename = arrSlidshowImg[0];
NSString *imagePath = [path stringAppendingPathComponent:filename];
UIImage *image = [UIImage imageWithContentsOfFile:imagePath];
fourBySixBackgroundImageViewGIF.image = image;