是否有针对“核心值类型”的协议,例如String,Int

时间:2019-09-25 09:25:24

标签: swift swift-protocols

我在我的iOS项目中使用Firestore,它允许您像这样查询对象(示例取自其文档):

// Create a reference to the cities collection
let citiesRef = db.collection("cities")

// Create a query against the collection.
let query = citiesRef.whereField("state", isEqualTo: "CA")

isEqualTo参数的类型为Any(实际的Obj-C标头中的id),但实际上,它仅适用于基本类型,例如字符串和数字(​​可能还有一些其他类型) ?)。如果您提供某种结构,该应用就会崩溃。

因此,为了让编译器防止这种情况,我想添加自己的函数,该函数不使用Any类型,而是一个仅允许基本类型的协议。我想知道是否有Swift已经提供的协议?

类似于在UserDefaults中存储内容,它也使用Any类型,但实际上只允许存储一组有限的类型。是否有类似PropertyListSerializable之类的协议?

实际上,某处是否有内置协议列表? Apple似乎没有提供此功能,因此很难知道已经提供了什么和可用的东西。

0 个答案:

没有答案