无法将Realm框架导入swift项目

时间:2015-07-22 09:16:25

标签: xcode swift realm

我已将Realm.framework和RealmSwift.framework文件添加到我的项目嵌入式二进制文件中。当我写"导入Realm"在我的swift文件中,它说"没有这样的模块Realm"

我正在使用Xcode 7和realm-swift-0.93.2。你可以帮我解决这个问题吗?

5 个答案:

答案 0 :(得分:2)

请检查应用目标的RealmSwift.framework构建设置中是否列出了Framework Search Paths的父路径。与Xcode 6不同,Xcode 7 beta1-3中不再自动设置该值(也许这是一个错误,在beta4中修复)。通常值为$(PROJECT_DIR)

enter image description here

但是,realm-swift-0.93.2与Xcode 7和Swift 2不兼容。即使上述问题已得到解决,也会出现另一个错误。 (也许Module file was created by an older version of the compiler

要将RealmSwift与Xcode 7和Swift 2一起使用,您应该自己从源代码构建框架,或者使用像CocoaPods这样的包管理器来构建和集成到您的项目中。我强烈建议使用CocoaPods。安装与Swift 2兼容的Realm的说明在这里:https://realm.io/docs/swift/latest/#installation-swift-20

答案 1 :(得分:1)

确保不仅在测试目标中(如当前文档所指出的那样),而且在应用目标的构建设置中,确保RealmSwift.framework的父路径列在“框架搜索路径”中建立设置。

答案 2 :(得分:0)

我不知道您的项目有什么问题,但您可以尝试使用Realm Objective-C

  1. 按照最新说明操作。
  2. 创建桥接标题。

  3. 在桥接标题中添加:

    #import "Realm/Realm.h"

  4. 从您的代码中删除所有import Realm语句,包括RLMSupport.swift

  5. 现在应该可以了。例如,我将其放入我的ViewController.swift

    进行测试
    import UIKit
    
    class Person: RLMObject {
        dynamic var name = ""
        dynamic var birthdate = NSDate(timeIntervalSince1970: 1)
    }
    
    class ViewController: UIViewController {
        override func viewDidLoad() {
            super.viewDidLoad()
    
            let author = Person()
            author.name = "David Foster Wallace"
    
            // Get the default Realm
            let realm = RLMRealm.defaultRealm()
    
            // Add to the Realm inside a transaction
            realm.beginWriteTransaction()
            realm.addObject(author)
            realm.commitWriteTransaction()
    
            // Print all Persons
            println(Person.allObjects())
        }
    }
    
  6. 打印哪些:

        RLMResults <0x7fa1c3f44760> (
        [0] Person {
            name = David Foster Wallace;
            birthdate = 1970-01-01 00:00:01 +0000;
            }
        )
    

    来自HERE的参考。

    HERE正在开展项目。

答案 3 :(得分:0)

对于Swift,您需要导入RealmSwift而不是Realm。

答案 4 :(得分:0)

要通过Swift软件包管理器包含Realm,方法将类似于:

// swift-tools-version:5.0
import PackageDescription

let package = Package(
    name: "SomeExampleApp",
    products: [
        // ...
    ],
    dependencies: [
        //...
        .package(
            url: "https://github.com/realm/realm-cocoa.git", 
            from: "3.18.0"
        ),
    ],
    targets: [
        .target(
            name: "SomeExampleApp",
            dependencies: ["Realm", "RealmSwift", /*...*/],
            // ...
        )
    ],
    swiftLanguageVersions: [.v5]
)
//
//  SomeExampleAppFile.swift
//
import Foundation
import Realm
import RealmSwift

// code, code, code ...