当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Swift String init(describing:)用法及代码示例


用法一

初始化器

init(describing:)

创建一个表示给定值的字符串。

声明

init<Subject>(describing instance: Subject) where Subject : TextOutputStreamable

详述

使用此初始化程序将任何类型的实例转换为其首选表示形式,即 String 实例。初始化程序以下列方式之一创建 instance 的字符串表示形式,具体取决于其协议一致性:

  • 如果 instance 符合 TextOutputStreamable 协议,则通过在空字符串 s 上调用 instance.write(to: s) 获得结果。

  • 如果 instance 符合 CustomStringConvertible 协议,则结果为 instance.description

  • 如果 instance 符合 CustomDebugStringConvertible 协议,则结果为 instance.debugDescription

  • Swift 标准库会自动提供未指定的结果。

例如,这个自定义 Point 结构使用标准库提供的默认表示。


struct Point {
    let x: Int, y: Int
}


let p = Point(x: 21, y: 30)
print(String(describing: p))
// Prints "Point(x: 21, y: 30)"

通过实现description 属性添加CustomStringConvertible 一致性后,Point 提供自己的自定义表示。


extension Point: CustomStringConvertible {
    var description: String {
        return "(\(x), \(y))"
    }
}


print(String(describing: p))
// Prints "(21, 30)"

可用版本

iOS 8.0+, iPadOS 8.0+, macOS 10.10+, Mac Catalyst 13.0+, tvOS 9.0+, watchOS 2.0+

用法二

初始化器

init(describing:)

创建一个表示给定值的字符串。

声明

init<Subject>(describing instance: Subject)

详述

使用此初始化程序将任何类型的实例转换为其首选表示形式,即 String 实例。初始化程序以下列方式之一创建 instance 的字符串表示形式,具体取决于其协议一致性:

  • 如果 instance 符合 TextOutputStreamable 协议,则通过在空字符串 s 上调用 instance.write(to: s) 获得结果。

  • 如果 instance 符合 CustomStringConvertible 协议,则结果为 instance.description

  • 如果 instance 符合 CustomDebugStringConvertible 协议,则结果为 instance.debugDescription

  • Swift 标准库会自动提供未指定的结果。

例如,这个自定义 Point 结构使用标准库提供的默认表示。


struct Point {
    let x: Int, y: Int
}


let p = Point(x: 21, y: 30)
print(String(describing: p))
// Prints "Point(x: 21, y: 30)"

通过实现description 属性添加CustomStringConvertible 一致性后,Point 提供自己的自定义表示。


extension Point: CustomStringConvertible {
    var description: String {
        return "(\(x), \(y))"
    }
}


print(String(describing: p))
// Prints "(21, 30)"

可用版本

iOS 8.0+, iPadOS 8.0+, macOS 10.10+, Mac Catalyst 13.0+, tvOS 9.0+, watchOS 2.0+

用法三

初始化器

init(describing:)

创建一个表示给定值的字符串。

声明

init<Subject>(describing instance: Subject) where Subject : CustomStringConvertible, Subject : TextOutputStreamable

详述

使用此初始化程序将任何类型的实例转换为其首选表示形式,即 String 实例。初始化程序以下列方式之一创建 instance 的字符串表示形式,具体取决于其协议一致性:

  • 如果 instance 符合 TextOutputStreamable 协议,则通过在空字符串 s 上调用 instance.write(to: s) 获得结果。

  • 如果 instance 符合 CustomStringConvertible 协议,则结果为 instance.description

  • 如果 instance 符合 CustomDebugStringConvertible 协议,则结果为 instance.debugDescription

  • Swift 标准库会自动提供未指定的结果。

例如,这个自定义 Point 结构使用标准库提供的默认表示。


struct Point {
    let x: Int, y: Int
}


let p = Point(x: 21, y: 30)
print(String(describing: p))
// Prints "Point(x: 21, y: 30)"

通过实现description 属性添加CustomStringConvertible 一致性后,Point 提供自己的自定义表示。


extension Point: CustomStringConvertible {
    var description: String {
        return "(\(x), \(y))"
    }
}


print(String(describing: p))
// Prints "(21, 30)"

可用版本

iOS 8.0+, iPadOS 8.0+, macOS 10.10+, Mac Catalyst 13.0+, tvOS 9.0+, watchOS 2.0+

用法四

初始化器

init(describing:)

创建一个表示给定值的字符串。

声明

init<Subject>(describing instance: Subject) where Subject : CustomStringConvertible

详述

使用此初始化程序将任何类型的实例转换为其首选表示形式,即 String 实例。初始化程序以下列方式之一创建 instance 的字符串表示形式,具体取决于其协议一致性:

  • 如果 instance 符合 TextOutputStreamable 协议,则通过在空字符串 s 上调用 instance.write(to: s) 获得结果。

  • 如果 instance 符合 CustomStringConvertible 协议,则结果为 instance.description

  • 如果 instance 符合 CustomDebugStringConvertible 协议,则结果为 instance.debugDescription

  • Swift 标准库会自动提供未指定的结果。

例如,这个自定义 Point 结构使用标准库提供的默认表示。


struct Point {
    let x: Int, y: Int
}


let p = Point(x: 21, y: 30)
print(String(describing: p))
// Prints "Point(x: 21, y: 30)"

通过实现description 属性添加CustomStringConvertible 一致性后,Point 提供自己的自定义表示。


extension Point: CustomStringConvertible {
    var description: String {
        return "(\(x), \(y))"
    }
}


print(String(describing: p))
// Prints "(21, 30)"

可用版本

iOS 8.0+, iPadOS 8.0+, macOS 10.10+, Mac Catalyst 13.0+, tvOS 9.0+, watchOS 2.0+

相关用法


注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 String init(describing:)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。