2015-07-12 14 views
3

我的應用程序需要能夠讀取plist文件,並知道數據的類型,所以我創建了一個函數來計算對象的類型:使用Swift,當從plist加載數據時,如何判斷布爾值和整數值之間的差異?

func getTypeOfObject(object: AnyObject) -> String { 
    if object as? [String:AnyObject] != nil { 
     return "dict" 
    } else if object as? [AnyObject] != nil { 
     return "array" 
    } else if object as? Bool != nil { 
     return "bool" 
    } else if object as? Int != nil { 
     return "int" 
    } else if object as? String != nil { 
     return "string" 
    } else { 
     return "" 
    } 
} 

的問題是,如果我調用的函數上我得到一個數字「布爾」返回。 如果我改變函數來檢查一個數字,我首先得到「int」,當我傳遞一個布爾值時返回。

這似乎是因爲當我從plist文件中的數據創建一個字典時,布爾值賦予一個整數值(1表示true,0表示false)。

有什麼辦法可以解決這個問題嗎?

回答

0

我做了一些更多的研究,並決定使用CFPropertyList,它解決了我的問題,因爲布爾值是CFBooleanRef s,而不是NSNumber s。

如果有人想在評論中詢問實際的代碼。現在有點亂,這就是爲什麼我沒有馬上發佈它。

4

你不能 - 除非你想自己解析plist XML。返回的值將是NSNumber,由您決定是否將其視爲bool(通過NSNumber的boolValue)。

+0

你知道任何可用於解析plist XML的框架/庫嗎? –

+0

https://github.com/Wolg/awesome-swift#jsonxml-manipulation – lchamp

+0

謝謝!我會看看它,看看它是否適合我。 –

相關問題