Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何将对象模型从objective-C(框架内)发送到Swift(框架外)?_Ios_Objective C_Swift - Fatal编程技术网

Ios 如何将对象模型从objective-C(框架内)发送到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

我在objective-C中创建了一个框架中的模型类,我正在尝试将objective-C模型类对象发送给swift类,以便我可以在swift中使用它的值(swift类在项目中,而不是在框架中)

我所做的

  • 创建了桥接头文件并在其中导入model class.h文件
  • 还尝试在objective-C文件中创建swift类的对象,以便我可以在swift对象中传递模型类的对象
  • 模型类

    #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您是否按照上面的文档引用将
    定义模块
    构建设置设置为