2014-06-17 61 views
2

我试图在Swift中重写我的测试应用程序。而现在看来似乎不可能......或者我错过了一些东西。看:Xcode 6 + Swift + NSTextViewDelegate =编译错误

  1. 创建新的OS X应用程序项目。
  2. 选择基于文档的应用程序,Core Data和Swift语言。
  3. 对任何泛型类采用NSTextViewDelegate协议。
  4. 建立并得到编译错误。

它看起来像一个错误!如果我删除NSTextViewDelegate协议,一切都很好。但我需要这个协议。它适用于Xcode 5和Objective-C。 Xcode 6 beta1和beta2都有这个问题。有任何想法吗?

PS:已经提交错误报告,因为它看起来像Xcode中6的错误

命令/Applications/Xcode6-Beta2.app/Contents/Developer/Toolchains/XcodeDefault.xctool链的/ usr/bin中/ SWIFT退出代码失败254

0 swift     0x00000001056a4e08 llvm::sys::PrintStackTrace(__sFILE*) + 40 
    1 swift     0x00000001056a52f4 SignalHandler(int) + 452 
    2 libsystem_platform.dylib 0x00007fff8a4025aa _sigtramp + 26 
    3 swift     0x0000000104c94eca void llvm::BitstreamWriter::EmitRecordWithAbbrevImpl<unsigned long long>(unsigned int, llvm::SmallVectorImpl<unsigned long long>&, llvm::StringRef) + 1066 
    4 swift     0x0000000104c46296 swift::serialization::Serializer::writeConformance(swift::ProtocolDecl const*, swift::ProtocolConformance const*, swift::Decl const*, std::__1::array<unsigned int, 256ul> const&, bool) + 1366 
    5 swift     0x0000000104c4b33c swift::serialization::Serializer::writeDecl(swift::Decl const*) + 9420 
    6 swift     0x0000000104c521b5 swift::serialization::Serializer::writeAllDeclsAndTypes() + 8837 
    7 swift     0x0000000104c52b1e swift::serialization::Serializer::writeAST(llvm::PointerUnion<swift::Module*, swift::SourceFile*>) + 1182 
    8 swift     0x0000000104c538cb swift::serialization::Serializer::writeToStream(llvm::raw_ostream&, llvm::PointerUnion<swift::Module*, swift::SourceFile*>, swift::SILModule const*, bool, llvm::ArrayRef<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, llvm::StringRef, llvm::StringRef, bool) + 187 
    9 swift     0x0000000104c5424e swift::serialize(llvm::PointerUnion<swift::Module*, swift::SourceFile*>, char const*, char const*, swift::SILModule const*, bool, llvm::ArrayRef<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, llvm::StringRef, llvm::StringRef, bool) + 398 
    10 swift     0x0000000104a69679 frontend_main(llvm::ArrayRef<char const*>, char const*, void*) + 4105 
    11 swift     0x0000000104a6865d main + 1533 
    12 libdyld.dylib   0x00007fff8ba125fd start + 1 
    13 libdyld.dylib   0x0000000000000031 start + 1952373301 
<unknown>:0: error: unable to execute command: Segmentation fault: 11 
<unknown>:0: error: merge-module command failed due to signal (use -v to see invocation) 
Command /Applications/Xcode6-Beta2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift failed with exit code 254 
+0

是什么错误停止?和代码? –

+0

命令/Applications/Xcode6-Beta2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift失败,退出代码为254 –

回答

2

我遇到了同样的问题。

要解决方法我已经分类NSTextView并完成我自己的代表团如下。

class TextViewDelegate: NSObject { 
    func textView(textView: NSTextView!, doCommandBySelector commandSelector: Selector) -> Bool { 
     // Do something useful here or just 
     return false 
    } 
} 

class TextView: NSTextView { 
    let myDelegate = TextViewDelegate() 

    override func doCommandBySelector(aSelector: Selector) { 
     if !myDelegate.textView(self, doCommandBySelector: aSelector) { 
      super.doCommandBySelector(aSelector) 
     } 
    } 
} 

这里有https://github.com/sjhorn/SwiftEdit

+0

尼斯解决方案!但是苹果认识到,作为一个bug,我希望beta3能够修复它。 –

1

随着Beta 3的一个例子,编译没有再崩溃。

但是,你必须定义一个TextView出口的隐含解开

@IBOutlet strong var textView: NSTextView! 

,否则编译器错误

property 'self.textView' not initialized at super.init call