2015-12-16 112 views
4

我被要求一個相當大的應用程序遷移到夫特2.編譯器不斷投擲段故障:對於一種功能,存在於應用程序的邏輯的不同模塊11級的錯誤(唯一的區別是變量使用):命令因信號失敗:分段故障:11 | xcode的7.2

func loadMoreContent() { 

if let collection = self.ratingsCollection where collection.identifier != 0, 
    let totalEntries = collection.totalEntries, 
    let objects = self.ratings?.count where objects < totalEntries { 

    self.ratingsCollection = nil 

    collection.nextPage().onSuccess { (value) in 

     if let collection = value as? Collection<Rating> { 
     self.ratingsCollection = collection 
     } else { 
     self.ratingsCollection = Collection<Rating>(identifier: 0) 
     } 

     }.onFailure { error in 
     self.ratingsCollection = Collection<Rating>(identifier: 0) 
    } 
    } 
} 

這裏是自己的錯誤:

1. While type-checking 'loadMoreContent' at (path redacted).swift:46:3 
2. While type-checking expression at [(path redacted).swift:54:9 - line:64:9] 
    RangeText="collection.nextPage().onSuccess { (value) in 

       if let collection = value as? Collection<Rating> { 
       self.ratingsCollection = collection 
       } else { 
       self.ratingsCollection = Collection<Rating>(identifier: 0) 
       } 

       }.onFailure { error in 
       self.ratingsCollection = Collection<Rating>(identifier: 0) 
      }" 

3. While loading members for declaration 0x7fdda42ea2b0 at <invalid loc> 
4. While deserializing 'producer' (FuncDecl #340) 

沒有人有任何想法什麼都可以錯乍一看這個功能呢?我應該添加它編譯Xcode 6/Swift 1.2沒有變化。

+0

你能隔離哪一行loadMoreContent導致錯誤?也許首先評論一切,然後逐一添加每一行。我瘋狂的猜測是它與'as'有關。收集'投。我認爲這有助於更多地瞭解您正在使用的Collection類。 – nwales

+0

奇怪的是,我更新了ReactiveCocoa之後,錯誤消失了,它甚至在Collection類或者函數本身中都沒有使用過......我猜,接管一個沒有移交的廢棄項目會帶來樂趣。非常感謝您的輸入@nwales – michalronin

回答

3

這是在XCode7中特別常見的拔毛錯誤。

有時,通常的XCode愚蠢的錯誤協議(clean,XCode Restart,clean,build)會修復它。但是,通常是由於一個或多個違規代碼行。這並不一定意味着代碼中存在錯誤!

因此,在重新啓動之前,有時可以按順序撤消最近的更改並嘗試在您繼續時進行構建。如果您的上次成功構建後您的任何依賴關係或框架已經更新,這些可能是候選人。

有一些東西似乎會定期產生這個錯誤。所以,請添加到這個列表簡潔,如果你可以隔離一貫導致錯誤您的具體問題:

1)使用呼叫加上運營商使用autoclosures方法字符串連接(在電話發現XCGLogger):

public func myFunc(@autoclosure closure:() -> String?){ 
     // do something 
} 

someInstance.myFunc("Hi " + nameStr + "!") 

2)未能調用子類從super.init(),尤其是當超類是使用默認初始化(還沒有明確創建你自己的init)

3)意外地使用單等號測試爲了平等(使用=而不是==),特別是在複雜語句中,例如this answer.

相關問題