Ios 如何将对象模型从objective-C(框架内)发送到Swift(框架外)?
我在objective-C中创建了一个框架中的模型类,我正在尝试将objective-C模型类对象发送给swift类,以便我可以在swift中使用它的值(swift类在项目中,而不是在框架中) 我所做的Ios 如何将对象模型从objective-C(框架内)发送到Swift(框架外)?,ios,objective-c,swift,Ios,Objective C,Swift,我在objective-C中创建了一个框架中的模型类,我正在尝试将objective-C模型类对象发送给swift类,以便我可以在swift中使用它的值(swift类在项目中,而不是在框架中) 我所做的 创建了桥接头文件并在其中导入model class.h文件 还尝试在objective-C文件中创建swift类的对象,以便我可以在swift对象中传递模型类的对象 模型类 #import <Foundation/Foundation.h> @interface ModelClas
#import <Foundation/Foundation.h>
@interface ModelClass : NSObject{
}
@property (copy) NSString *modelString;
@end
正在尝试将此对象传递给swift类。但我无法在objective-C文件中创建swift类的对象
注:模型类和.m文件在框架中,swift类在项目中
有什么解决方案吗?要将对象从Objective-C传递到Swift,您需要在Obj-C代码中包含
-Swift.h
,此头文件由Xcode自动生成。如果您自己创建了一个,请删除它
Swift
class Foo {
var model: ModelClass
// ...
}
foo.fetchSomething() {
model in
print(model.modelString)
}
目标-C
#import <Foundation/Foundation.h>
#import "<ProductModuleName>-Swift.h"
// ...
ModelClass *modelClass = [[ModelClass alloc] init];
modelClass.modelString = @"testString";
Foo *foo = [[Foo alloc] init];
[foo setModel:modelClass];
#import <Foundation/Foundation.h>
@import FrameworkName
// ...
Foo *foo = [[Foo alloc] init];
// ...
- (void)fetchSomething:(void (^)(ModelClass *))completion
{
ModelClass *modelClass = [[ModelClass alloc] init];
modelClass.modelString = @"testString";
completion(modelClass);
}
另一次更新 如果您正在等待异步方法的结果,例如从web请求返回数据,则可以使用
委托
或块
。这些在Objective-C和Swift之间可以互换,确保遵守上述混合语言的要求。下面是使用块的示例
目标-C
#import <Foundation/Foundation.h>
#import "<ProductModuleName>-Swift.h"
// ...
ModelClass *modelClass = [[ModelClass alloc] init];
modelClass.modelString = @"testString";
Foo *foo = [[Foo alloc] init];
[foo setModel:modelClass];
#import <Foundation/Foundation.h>
@import FrameworkName
// ...
Foo *foo = [[Foo alloc] init];
// ...
- (void)fetchSomething:(void (^)(ModelClass *))completion
{
ModelClass *modelClass = [[ModelClass alloc] init];
modelClass.modelString = @"testString";
completion(modelClass);
}
Swift
class Foo {
var model: ModelClass
// ...
}
foo.fetchSomething() {
model in
print(model.modelString)
}
显示一些代码?请检查我更新的问题您在swift中创建对象或在函数中传递给swift时有问题吗?我在objective-C类中创建swift类的对象时有问题(objective-C类在框架中,swift类在框架外)实际上,问题是我的模块类和另一个类在框架中,我需要将该对象发送到的文件在swift中,它在框架之外---------------但在您的回答中,这两个文件都在项目中------问题在于创建Foo*Foo=[[Foo alloc]init]@sss如果没有清晰的代码示例或问题的解释,就很难给出准确的答案。我已经将Swift框架导入到Objective Cto中,对答案进行了编辑,以保持清晰-在我的Swift项目中,我在Objective-C中有框架,我需要创建Swift类的对象(在框架之外)在objective-C框架中class@import现在已被禁用Apple@sss您是否按照上面的文档引用将定义模块
构建设置设置为是
?