gpt4 book ai didi

iphone - 对象-C : Creating an object with a String name

转载 作者:行者123 更新时间:2023-12-03 20:58:37 25 4
gpt4 key购买 nike

大家好。我知道这听起来很简单,但我找不到方法来做到这一点。我在 Obj-C 中有一个方法,它接受 NSString,然后应该创建一个以 String 作为标题的新类。

-(DataModel *)createDataModel:(NSString *)dataModel_name {
DataModel *[initWithString:dataModel_name] = [[DataModel alloc] init];
}

我知道我在这方面遇到了一些问题。对于初学者来说,我不知道如何定义名称可能更改的对象的返回。其次,我知道考虑到 initWithString 方法是错误的,这无法编译。我只是不知道该怎么做或使用什么方法才能创建具有指定名称的 DataModel 对象...

最佳答案

如果您的标题作为属性设置正确:

-(DataModel *)createDataModel:(NSString *)dataModel_name {
DataModel *model = [[DataModel alloc] init];
model.title = dataModel_name;
return model;
}

这需要在你的 datamodel.h 中:

@interface DataModel {
NSString *title;
}
@property (nonatomic, retain) NSString *title;
@end

在你的.m中:

@implementation DataModel
@synthesize title;
@end

但是您的问题不清楚,您的真正目的是尝试根据 dataModel_name 实例化不同的类,还是您只有一个标题应设置为 dataModel_name 的通用类。

根据您想要做什么,会有不同的答案。如果您确实想要根据名称使用不同的类,那么您应该采取不同的做法。您可以使用 Cocoa 特定类型:id,从方法返回任何对象。然后使用 NSClassFromString() 方法创建对象:

- (id)createDataModel:(NSString *)dataModel_name {
id model = [[NSClassFromString(dataModel_name) alloc] init];
[model setTitle:dataModel_name];
return model;
}

或者您可以定义一个协议(protocol)(Java 术语中的接口(interface))来声明数据模型的功能。您的方法将返回该值。

关于iphone - 对象-C : Creating an object with a String name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2968007/

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