Tôi thấy điều này thú vị hơn bất cứ thứ gì. Tôi đã sửa nó, nhưng tôi tự hỏi về nguyên nhân. Đây là lỗi: DataManager.swift:51:90: Expression was too complex to be solved in reasonable time; consider breaking up the expression into distinct sub-expressions
. Tại sao nó phàn nàn? Nó có vẻ giống như một trong những biểu thức đơn giản nhất có thể.Lỗi trình biên dịch Swift: "Biểu thức quá phức tạp" trên một chuỗi nối
Những điểm biên dịch đến phần columns + ");";
func tableName() -> String { return("users"); }
func createTableStatement(schema: [String]) -> String {
var schema = schema;
schema.append("id string");
schema.append("created integer");
schema.append("updated integer");
schema.append("model blob");
var columns: String = ",".join(schema);
var statement = "create table if not exists " + self.tableName() + "(" + columns + ");";
return(statement);
}
việc sửa chữa là:
var statement = "create table if not exists " + self.tableName();
statement += "(" + columns + ");";
này cũng làm việc (thông qua @efischency) nhưng tôi không thích nó càng nhiều bởi vì tôi nghĩ rằng (
bị mất:
var statement = "create table if not exists \(self.tableName()) (\(columns))"
Bạn có thấy nếu làm việc này: 'var tuyên bố = "tạo bảng nếu không tồn tại \ (self.tableName()) (\ (cột)) "'? – efischency
Nội suy chuỗi, theo khuyến cáo của @efischency, thường là một lựa chọn tốt hơn so với nối thủ công với '+'. – mattt
Chắc chắn, nhưng đó không phải là vấn đề. Tôi không quan tâm nếu đó là "đề nghị" cách hay không, tôi chỉ muốn biết tại sao trình biên dịch cuộn cảm trên đó. Tôi có một giải pháp hoạt động, nó không phải là về sửa chữa lỗi, nó là về sự hiểu biết lỗi. –