我想使用不带可选扩展名的String值。我使用以下代码从firebase解析此数据:
Database.database().reference(withPath:
"Locations").child("Cities").observe(.value, with: { (snapShot) in
if snapShot.exists() {
let array:NSArray = snapShot.children.allObjects as NSArray
for child in array {
let snap = child as! DataSnapshot
let cityName = snap.key
let cityNameString = "\(cityName)"
if snap.value is NSDictionary {
let data:NSDictionary = snap.value as! NSDictionary
let lat = data.value(forKey: "lat")
let lng = data.value(forKey: "lng")
let radius = data.value(forKey: "radius")
let latstring = "\(lat)"
let lngstring = "\(lng)"
let radiusstring = "\(radius)"
let city = CityObject(name: cityNameString , lat: latstring , lng: lngstring, radius: radiusstring)
print("Value is", laststring)
self.selectCity(cityObject: city)
}
}
}
})
解析此数据后,我尝试打印例如latstring并得到以下结果:
值是可选的(52.523553)
我的CityObject如下所示:
class CityObject{
var name: String?
var lat: String?
var lng: String?
var radius: String?
init(name: String?, lat: String?, lng: String?, radius: String?){
self.name = name
self.lat = lat
self.lng = lng
self.radius = radius
}
就像@GioR所说的那样,该值是Optional(52.523553),因为latstring的类型是隐式的:String?。这是由于let lat =
data.value(forKey:“ lat”)将返回字符串?隐式设置lat的类型。
有关值的文档,请参阅https://developer.apple.com/documentation/objectivec/nsobject/1412591-value(forKey
:)
Swift有多种处理nil的方法。这三个可能对您有帮助,nil合并运算符:
??
如果可选结果为nil,则此运算符将提供默认值:
let lat: String = data.value(forKey: "lat") ?? "the lat in the dictionary was nil!"
警卫声明
guard let lat: String = data.value(forKey: "lat") as? String else {
//Oops, didn't get a string, leave the function!
}
Guard语句使您可以将可选变量转换为等效的非可选变量,如果恰好为nil,则可以退出该函数
如果让
if let lat: String = data.value(forKey: "lat") as? String {
//Do something with the non-optional lat
}
//Carry on with the rest of the function
希望这可以帮助^^
问题内容: 红宝石有功能string.squeeze,但我似乎找不到快速等效。 例如我想转簿记员-> bokepr 我唯一的选择是创建一组字符,然后将字符从该组拉回到字符串中吗? 有一个更好的方法吗? 问题答案: 编辑/更新: Swift 4.2或更高版本 您可以使用一组来过滤重复的字符: 或作为扩展,也将扩展String和Substrings:
问题内容: 如何从字符串中去除特殊字符的答案?不管用。 这是我得到的,它给我一个错误 错误提示 _Element(aka字符)无法转换为预期的参数类型’String’。 问题答案: 像这样: 测试方法如下:
问题内容: 如何从Swift中删除变音符号(或重音符号)(例如说将“één”更改为“ een”)?我必须回到Swift还是可以在Swift中完成? 问题答案: 您可以直接在Swift上操作(如果导入了“ Foundation”): 斯威夫特3:
问题内容: 我想删除特殊字符,例如: 使用Java从String中获取。 问题答案: 这取决于你定义为特殊字符的内容,但是请尝试: 请注意,该^字符不能是列表中的第一个字符,因为你要么必须对其进行转义,否则将意味着“除这些字符外的任何字符”。 另一个注意事项:-字符必须是列表中的第一个或最后一个,否则你必须对其进行转义,否则它将定义一个范围(例如,表示“ 范围内的所有字符” )。 所以,为了保持一
问题内容: 我想从我的字符串中删除以下所有字符 “> [],-” 目前我正在这样做。但必须有一个更有效的方法 问题答案: 使用描述要替换的所有字符的正则表达式,以及替换与该正则表达式匹配的所有内容的方法: (编辑:实际上,我认为不应该转义。而且我忘记了将反斜杠加倍,因为它们会被解释两次:一次是由Java编译器,一次是由正则表达式引擎。)
问题内容: 我不知道如何从Java中的字符串中删除无效字符。我正在尝试删除不是数字,字母或()[]的所有字符。我怎样才能做到这一点? 谢谢 问题答案: Javadocs是您的朋友。正则表达式也是您的朋友。 编辑: siad,这仅适用于拉丁字母;您可以据此进行调整。可以用于表示“单词”字符(如果它适用于您的情况),尽管它包括在内。