2015-06-01 43 views
0

有什麼辦法將NSAttributeType轉換爲AnyObject。根據文檔,UInt是NSNumber的一種類型,因此是一個對象。但是,當我試圖通過下面的代碼,它拋出我的錯誤。在rightExpressionTypeKey發生Swift NSAttributeType

var predicateArray: [AnyObject]!; 

    var initialDictionary = [String: AnyObject]() 
    initialDictionary["displayName"] = "firstName" 
    initialDictionary["identifier"] = "classCode" 
    initialDictionary["rightExpressionType"] = NSAttributeType.StringAttributeType 
    initialDictionary["modifierType"] = "NSDirectPredicateModifier" 
    initialDictionary["operators"] = [NSPredicateOperatorType.EqualToPredicateOperatorType, NSPredicateOperatorType.NotEqualToPredicateOperatorType] 
    initialDictionary["options"] = 0 

    predicateArray.append(initialDictionary) 

錯誤和經營者說NSAttributeType和NSPredicateOperatorType不能分配給AnyObject。

任何人都可以請澄清相同。

預先感謝。

回答

1
  • UInt是值類型,這是隱式轉換爲NSNumber,因此它可以被視爲AnyObject
  • NSAttributedType是一個enum這是價值類型與UInt原始值,但不能隱式轉換爲NSNumber。

爲了使您的代碼的工作,你可以使用.rawValue

initialDictionary["rightExpressionType"] = NSAttributeType.StringAttributeType.rawValue 
initialDictionary["operators"] = [NSPredicateOperatorType.EqualToPredicateOperatorType.rawValue, NSPredicateOperatorType.NotEqualToPredicateOperatorType.rawValue] 
+0

感謝@ Jakub.The解決方案的工作。感謝您的澄清 –

+0

@ user3162384,請將解決方案標記爲已回答,以便我們知道解決方案是什麼。 –