使用XML解析Swift库时,Playgrounds会因“未知错误”而崩溃

时间:2017-01-16 15:14:47

标签: xml xcode frameworks swift-playground

我正在使用Kanna框架开发一个涉及一些XML解析的自定义框架。每当我尝试将我的框架导入游乐场时,游乐场都会崩溃并出现以下错误:

Playground execution failed: expression failed to parse, unknown error
* thread #1: tid = 0x4e9448, 0x00000001074bf360 com.apple.dt.Xcode.PlaygroundStub-macosx`executePlayground, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
  * frame #0: 0x00000001074bf360 com.apple.dt.Xcode.PlaygroundStub-macosx`executePlayground
    frame #1: 0x00000001074bd22a com.apple.dt.Xcode.PlaygroundStub-macosx`-[PlaygroundViewBridgeService execute] + 90
    frame #2: 0x00007fffb4fc03ec CoreFoundation`__invoking___ + 140
    frame #3: 0x00007fffb4fc0271 CoreFoundation`-[NSInvocation invoke] + 289
    frame #4: 0x00007fffb4fd97a6 CoreFoundation`-[NSInvocation invokeWithTarget:] + 54
    frame #5: 0x00007fffc86ca95b ViewBridge`__68-[NSVB_ViewServiceImplicitAnimationDecodingProxy forwardInvocation:]_block_invoke + 47
    frame #6: 0x00007fffc86e9f4c ViewBridge`__runAnimationGroup_block_invoke + 21
...

我正在开发的框架工作正常(它构建和单元测试按预期运行),但是无法在操场上使用它是一件痛苦的事。

我已经建立了一个示例项目,其中包含有关复制问题的说明以及GitHub上的完整堆栈跟踪:https://github.com/noahcgreen/XMLTest。如果从“XMLTest.swift”源文件中删除import Kanna,则错误消失。

到目前为止,我已经尝试过:

  • 使用Fuzi框架代替Kanna,
  • 使用CocoaPods而不是Carthage进行安装,
  • 在我的设备上更新libxml2(使用Homebrew)和
  • 重新开始使用XCode的干净安装的另一个(和新)设备,

都没有成功。我在这里结束了我的智慧。我做错了什么?

2 个答案:

答案 0 :(得分:2)

可能会帮助想要将 libxml2 库添加到Xcode游乐场的人。

请按照以下步骤操作:

  1. 创建一个空的工作区。
  2. 在工作区中添加一个游乐场。
  3. 向工作空间添加一个空框架,并将"$(SDKROOT)/usr/include/libxml2"添加到'SWIFT_INCLUDE_PATHS'中的'Build Settings'
  4. 在游乐场页面上添加'import libxml2'

答案 1 :(得分:1)

好的自定义框架,首先你需要让你在游乐场工作区

  1. 打开游乐场,然后选择文件>另存为工作区

  2. 打开游乐场的工作区

  3. 在工作区中选择文件 - >添加然后添加自定义框架工作。

    1. 导入框架工作
  4. 来自苹果的笔记

    重要说明:自定义框架在游乐场中工作需要满足以下条件:

    框架与游乐场位于同一工作区。

    该框架已经建成。

    如果是iOS框架,则它是为64位运行时目标构建的。

    工作区包含至少一个构建目标的活动方案。

    如果它是Objective-C框架,它是在Defines Module(DEFINES_MODULE)构建设置设置为Yes的情况下构建的。

    http://help.apple.com/xcode/mac/8.2/#/devc9b33111c我收到了我的信息。希望这会有所帮助。

    编辑:

    #import <Cocoa/Cocoa.h>
    #import <Kanna/Kanna.h>
    
    
    //! Project version number for XMLTest.
    FOUNDATION_EXPORT double XMLTestVersionNumber;
    
    //! Project version string for XMLTest.
    FOUNDATION_EXPORT const unsigned char XMLTestVersionString[];
    
    // In this header, you should import all the public headers of your framework using statements like #import <XMLTest/PublicHeader.h>
    

    好的老兄在xmltest.h中尝试这个