打印变量时出错 lldb_expr
Error lldb_expr when printing a variable
在下面的代码中,因为我在 playground 中打印 "aMovie.moviesGenere" 时出错:
struct Movie: Codable {
enum MovieGenere: String, Codable {
case horror, skifi, comedy, adventure, animation
}
var name : String
var moviesGenere : [MovieGenere]
var rating : Int
}
let aMovie = Movie(name: "Up", moviesGenere: [.comedy , .adventure, .animation], rating : 4)
print(aMovie.moviesGenere)
错误:
[__lldb_expr_98.Movie.MovieGenere.comedy, __lldb_expr_98.Movie.MovieGenere.adventure, __lldb_expr_98.Movie.MovieGenere.animation]
不是错误,是低级调试器以及 Playground 如何打印您的枚举。如果你分解它你会看到:
[
__lldb_expr_98.Movie.MovieGenere.comedy
,
__lldb_expr_98.Movie.MovieGenere.adventure
,
__lldb_expr_98.Movie.MovieGenere.animation
]
如果您想从控制台输出中删除 __lldb_expr 前缀。那么 struct 必须符合 CustomStringConvertible 协议。这是一个 public 协议,它有一个 var 描述,我们可以在其中提供自定义字符串来显示结构描述。
struct Movie: Codable, CustomStringConvertible {
enum MovieGenere: String, Codable, CustomStringConvertible {
var description: String {
return self.rawValue
}
case horror, skifi, comedy, adventure, animation
}
var name : String
var moviesGenere : [MovieGenere]
var rating : Int
var description: String {
return "\(name), \(moviesGenere), \(rating)"
}
}
let aMovie = Movie(name: "Up", moviesGenere: [.comedy , .adventure, .animation], rating : 4)
print(aMovie)
在下面的代码中,因为我在 playground 中打印 "aMovie.moviesGenere" 时出错:
struct Movie: Codable {
enum MovieGenere: String, Codable {
case horror, skifi, comedy, adventure, animation
}
var name : String
var moviesGenere : [MovieGenere]
var rating : Int
}
let aMovie = Movie(name: "Up", moviesGenere: [.comedy , .adventure, .animation], rating : 4)
print(aMovie.moviesGenere)
错误:
[__lldb_expr_98.Movie.MovieGenere.comedy, __lldb_expr_98.Movie.MovieGenere.adventure, __lldb_expr_98.Movie.MovieGenere.animation]
不是错误,是低级调试器以及 Playground 如何打印您的枚举。如果你分解它你会看到:
[
__lldb_expr_98.Movie.MovieGenere.comedy
,
__lldb_expr_98.Movie.MovieGenere.adventure
,
__lldb_expr_98.Movie.MovieGenere.animation
]
如果您想从控制台输出中删除 __lldb_expr 前缀。那么 struct 必须符合 CustomStringConvertible 协议。这是一个 public 协议,它有一个 var 描述,我们可以在其中提供自定义字符串来显示结构描述。
struct Movie: Codable, CustomStringConvertible {
enum MovieGenere: String, Codable, CustomStringConvertible {
var description: String {
return self.rawValue
}
case horror, skifi, comedy, adventure, animation
}
var name : String
var moviesGenere : [MovieGenere]
var rating : Int
var description: String {
return "\(name), \(moviesGenere), \(rating)"
}
}
let aMovie = Movie(name: "Up", moviesGenere: [.comedy , .adventure, .animation], rating : 4)
print(aMovie)