gpt4 book ai didi

ios - 在模型中存储 UIImage 的最佳方式

转载 作者:行者123 更新时间:2023-11-28 21:40:17 28 4
gpt4 key购买 nike

我对 iOS 开发和 MVC 概念还很陌生,但据我了解,该模型不应包含任何与 UI 相关的内容。我的 images.xcassets 文件夹中有一个名为 defaultImage 的图像,我想在初始化时将其设置为我的类的默认图像。此类是我的模型的一部分,具有以下公共(public)接口(interface):

#import <Foundation/Foundation.h>

@interface myClass : NSObject

@property (strong, nonatomic) NSString *name;
@property (strong, nonatomic) NSData *imageData;

@end

我将图像存储为 NSData 的原因是因为根据我对模型中不允许使用 UI 的假设,我不能使用 UIImage 这里。但是我无法成功初始化 imageData 以包含图像数据。我尝试了以下方法:

#import "myClass.h"

@implementation myClass

- (instancetype)init
{
self = [super init];
if (self) {
self.name = @"No Name";
self.imageData = [[NSData alloc] initWithContentsOfFile:@"defaultImage"];
}
return self;
}

@end

正如我所说,imageData 将包含 nil。环顾四周后,我找到了以下解决方案:

#import <UIKit/UIKit.h>
#import "myClass.h"

@implementation myClass

- (instancetype)init
{
self = [super init];
if (self) {
self.name = @"No Name";
self.imageData = [[NSData alloc] init];
self.imageData = UIImagePNGRepresentation([UIImage imageNamed:@"defaultImage"]);
}
return self;
}

@end

所以我的问题是,这是否违反了不允许在模型中使用 UI 和 UIKit 的规则?如果不是,请解释为什么不,如果是,还有其他方法吗?谢谢!

最佳答案

最好的方法是在模型中有图像名称或图像路径,您可以在任何需要的地方加载图像。

#import <Foundation/Foundation.h>

@interface myClass : NSObject

@property (strong, nonatomic) NSString *name;
@property (strong, nonatomic) NSString *imageName;

@end

最坏的情况,如果您必须在类本身中拥有数据,请按以下方式使用。

- (instancetype)init
{
self = [super init];
if (self) {
self.name = @"No Name";
//self.imageData = [[NSData alloc] init]; //--Not required
self.imageData = UIImagePNGRepresentation([UIImage imageNamed:@"defaultImage"]);
}
return self;
}

关于ios - 在模型中存储 UIImage 的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32449182/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com