Swift和Couchbase Lite发出导致EXC_BAD_ACCESS(代码= 2)的函数

Mic*_*ord 2 ios couchbase-lite swift ios8

我是Couchbase和Swift的新手,我正在尝试获得一个候选架构,并且正在为我正在开发的新应用程序运行.我认为Couchbase非常合适,除了我无法在没有崩溃的情况下使用它.这可能有几个原因,但只是为了进行健全性检查,我只想弄清楚这是不是我做错了.

以下映射函数在每次调用emit函数时都会导致EXC_BAD_ACCESS错误.该函数在启动时从视图控制器调用.我检查了调试器中的参数,它们指向内存中的有效引用.以下是创建查询的函数:

  class func listEvents() -> CBLQuery? {
    if let view:CBLView = DatabaseService.sharedInstance.database.viewNamed("events") {
      if !view.mapBlock { //create the map block if it doesn't exist
        func mapBlock(doc: [NSObject: AnyObject]!, emit: ((key: AnyObject, value: AnyObject!) -> ())?) {
          if let type:AnyObject = doc["type"] {
            if type.isKindOfClass(NSString.self) && (type as String) == Event.docType() {
              if let key: AnyObject = doc["date"] {
                if let emitFunc = emit {
                  emitFunc(key: key, value: doc)
                }
              }
            }
          }
        }
        view.setMapBlock(mapBlock,
          reduceBlock: nil,
          version: "1")
      }
      return view.createQuery()
    }
    return nil
  }
Run Code Online (Sandbox Code Playgroud)

我也试过重写Objective-C中的整个函数,它可以工作,所以如果没有人可以帮助我,那么我将把这个放到Swift中的一个bug中.如果是的话,我想向Apple报告这个问题,但是我对Couchbase Mobile SDK如何工作和Swift的理解仍然非常有限.如果有任何人设法让Couchbase Lite与Swift合作,那么如果你可以帮助我的话会很棒.或者甚至更好,如果在Github上有一个用Swift编写的示例项目,那么此时对我来说就是金牌.

小智 6

我没有写它,但这是一个相当不错的快速couchbaselite cheatsheet,其中有意见.

https://github.com/zemirco/swift-couchbaselite-cheatsheet