2015-07-12 15 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

谢谢!我会看看它,看看它是否适合我。 –

相关问题