2016-07-05 27 views
1

如果我定義了一個UICollectionViewCell子類:內嵌屬性的實例不工作的通用UICollectionViewCell子類

class TestCell<T>: UICollectionViewCell { 
    var float: CGFloat? = 3 
    var string = "abc" 
} 

註冊吧:

collectionView.registerClass(TestCell<String>.self, forCellWithReuseIdentifier: "Test") 

然後使用它:

collectionView.dequeueReusableCellWithReuseIdentifier("Test", forIndexPath: indexPath) as! TestCell<String> 

我注意到奇怪行爲與應該初始化的屬性。

  • 浮動==可選(0.0)
  • 字符串== 「」

這究竟是爲什麼以及如何解決呢?

這是在Xcode 7.3上

回答

1

看起來這是一個與泛型相關的錯誤。

如果您擺脫了通用說明符,則會根據您的預期初始化變量。

class TestCell<T>: UICollectionViewCell { 
    override init(frame: CGRect) { 
    float = 3 
    string = "abc" 
    super.init(frame: frame) 
    } 

    var float: CGFloat? 
    var string: String 
} 

如果需要通用符,你可以通過在init方法實例的屬性,而不是解決方法內嵌的問題