You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS项目转Framework:Swift与Objective-C互操作及头文件导入问题

解决Framework中Swift与Objective-C互操作的ModuleMapPrivate错误及头文件导入问题

结论先行:不能用Profile-Swift.h替代ProductName-Swift.h

Xcode生成的单个Swift类对应的XXX-Swift.h是内部临时文件,并非供开发者直接导入的正式头文件。官方仅支持通过$(PRODUCT_MODULE_NAME)-Swift.h(即你的ProductName-Swift.h)来桥接Swift与Objective-C。


解决@import ModuleMapPrivate not found错误的步骤

  1. 检查Framework的核心配置

    • 打开项目Build Settings,确保Defines Module设置为YES(Framework必须开启此选项才能支持模块化导入)
    • 确认Product Module Name与你的Framework名称完全一致,避免包含空格、特殊字符
    • 查看Swift Compiler - General下的Objective-C Generated Interface Header Name,保持默认值$(PRODUCT_MODULE_NAME)-Swift.h,不要手动修改
  2. 修正头文件导入语法
    在Objective-C文件中,必须使用模块化导入语法,而非相对路径导入:

    // 正确写法(替换YourFrameworkName为你的Framework实际名称)
    #import <YourFrameworkName/YourFrameworkName-Swift.h>
    

    若在Framework内部的Objective-C文件中使用,也可以用:

    #import "YourFrameworkName-Swift.h"
    

    注意:绝对不要直接写#import "ProductName-Swift.h",这会导致Xcode无法正确识别模块化路径。

  3. 清理缓存并重建项目

    • 执行Cmd+Shift+K清理项目
    • 执行Cmd+Shift+Option+K清理构建文件夹
    • 重启Xcode后重新构建,缓存异常是导致此类头文件错误的常见原因
  4. 移除多余的路径配置
    你之前添加的User Header search paths可能会干扰Framework的模块化路径解析,建议将其移除,依赖Xcode的默认模块化导入机制即可。

  5. 验证Swift类的访问权限
    你的Profile类已经正确标记了@objc public并继承自NSObject,这部分配置没问题。无需手动将生成的Swift头文件添加到Framework的Public Headers中,Xcode会自动处理桥接逻辑。


内容的提问来源于stack exchange,提问作者shikha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 10:17:04