相关疑难解决方法(0)

Swift编译器错误:字符串连接上的"表达式太复杂"

我觉得这比任何事都更有趣.我修好了,但我想知道原因.这是错误:DataManager.swift:51:90: Expression was too complex to be solved in reasonable time; consider breaking up the expression into distinct sub-expressions.为什么抱怨?这似乎是最简单的表达方式之一.

编译器指向该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);
}
Run Code Online (Sandbox Code Playgroud)

修复是:

var statement = "create …
Run Code Online (Sandbox Code Playgroud)

xcode functional-programming compiler-errors ios swift

139
推荐指数
3
解决办法
4万
查看次数

如何避免强行展开变量?

我该如何避免使用!使用此功能解压缩操作通常是一个不好的选择.

使用它的代码有什么更好的选择,使用它使代码看起来更简单,因为if检查变量!被召唤永远不会是零,所以不能崩溃.

我的导师向我们介绍了bang(!)操作员,然后告诉我们再也不要使用它了.告诉我们为什么当然,如果可选项为零,它将使我们的应用程序崩溃.

然而,我发现自己处于这样的情况下,爆炸操作员似乎是最简洁和安全的选择.

func fullName() -> String {
    if middleName == nil {
        return "\(firstName) \(lastName)"
    }else{
        return "\(firstName) \(middleName!) \(lastName)"
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来做这样的事情?

此外,如果有人想知道,这是完整的课程.

class CPerson{
    var firstName: String
    var middleName: String?
    var lastName: String

    init(firstName: String, middleName: String?, lastName: String) {
        self.firstName = firstName
        self.middleName = middleName
        self.lastName = lastName
    }
    convenience init(firstName: String, lastName: String) {
        self.init(firstName: firstName, middleName: nil, lastName: lastName)
    }
    func fullName() -> String {
        if middleName == nil {
            return "\(firstName) \(lastName)" …
Run Code Online (Sandbox Code Playgroud)

swift

27
推荐指数
3
解决办法
5504
查看次数