2017-05-31 63 views
0

使用iOS + Swift,允许特殊字符的最佳方法是什么?$#[] /在我的Firebase数据库密钥(节点名称)中?(iOS + Swift)如何在我的Firebase实时数据库中允许特殊字符?

+0

[添加Firebase数据,点和正斜杠]的可能的重复(https://stackoverflow.com/questions/19132867/adding-firebase-data-dots-and-forward-slashes) –

+1

嗨Trev14。我看到你也在可能的重复帖子中添加了一个答案(这太好了!),但是如果问题的上下文相似,我认为发布另一个问题(使用不同的标签)并添加相同的答案不是好。尽管如此,感谢对社区的贡献。干杯! –

+0

为什么你不能在Firebase数据库字符串中使用这些字符? “。$#[] /”在Firebase中完全是有效的*值*。 – Jay

回答

1

加百分号编码&解码!请记住允许字母数字字符(请参阅下面的示例)。

​​
+1

这是一个非常有趣的方法,但最初的问题可能应该更具体一些(请参阅我的回答),因为您询问在Firebase * Keys中使用特殊字符*而非字符串* - 我们不想误导未来的读者对Firebase没有经验。我给了你一个向上的创意思维。 – Jay

+0

啊谢谢你@Jay。从我迄今为止的经验来看,每次我试图用这些角色保存某些东西时,应用程序都会崩溃......显然是因为我从中创建了一个密钥,并将它们放入了值中。 – Trev14

0

的问题是

如何允许特殊字符在我的火力地堡实时数据库?

实际答案是没有必要允许Firebase实时数据库中的特殊字符。

例如:给出下面的代码

//self.ref is a reference to the Firebase Database 

let str = "this.is/a#crazy[string]right$here.$[]#/" 
let ref = self.ref.childByAutoId() 
ref.setValue(str) 

当代码运行,被写入火力

{ 
    "-KlZovTc2uhQXNzDodW_" : "this.is/a#crazy[string]right$here.$[]#/" 
} 

正如你所看到的字符串与给定字符串以下,包括特殊字符。

请务必注意,该问题询问允许字符串中包含特殊字符。 Firebase中的所有内容都存储为键值对,而值可以是字符串,因此这就是此答案所解决的问题。

关键的是不同的

如果你创建自己的密钥,它们必须是UTF-8编码,可以最多768个字节,并不能包含。,$,#,[,],/ ,或ASCII控制字符0-31或127.

更大的问题可以追溯到;一个结构需要将这些字符作为密钥包括在内,因为通常有更好的解决方案,可能(也应该)可能会重新考虑这些结构。