0

さて、いくつかの試行錯誤の後、他のエラーのいくつかを取り除くことができましたが、上記のエラーを返す 1 つのコマンドにはまだ問題があります。行は次のとおりです。

PCharacter.PCharacters.insert(PCharacter.charName <- "\(newCharName)", 
    PCharacter.maxHP <- "\(newCharHP)", PCharacter.maxMP <- "\(newCharMP)")

私が知る限り、これは挿入コマンドの形式に従いますが、Github の例では変数ではなくハードコードされた値を使用していますが、ユーザーが変数を入力するので変数が必要です。

もう少し背景を説明すると、PCharacter は AppDelegate の構造体ですが、これは ViewController のボタンにリンクされたアクションに含まれるコマンドです。

PCharacter 構造体は次のとおりです。

struct PCharacter {
    static let PCharacters = db["PCharacters"]
    static let id = Expression<Int64>("id")
    static let charName = Expression<String>("charName")
    static let currentHP = Expression<Int64>("currentHP")
    static let maxHP = Expression<Int64>("maxHP")
    static let currentMP = Expression<Int64>("currentMP")
    static let maxMP = Expression<Int64>("maxMP")
    static let currentExp = Expression<Int64>("currentExp")
    static let nextExp = Expression<Int64>("nextExp")
    static let charWeaponID = Expression<Int64>("charWeaponID")

    static func createTable() {
        db.create(table: PCharacters) { t in
            t.column(id, primaryKey: .Autoincrement)
            t.column(charName, unique: true)
            t.column(currentHP)
            t.column(maxHP)
            t.column(currentMP)
            t.column(maxMP)
            t.column(currentExp)
            t.column(nextExp)
            t.foreignKey(charWeaponID, references: Weapon.Weapons[id], delete: .SetNull)
        }
    }
}

助けてくれてありがとう!

4

1 に答える 1

0

この正確なエラーをカバーする寄稿ガイドラインのセクションがあります。複数行に分割するinsertと、次の 2 行で正しいエラー メッセージが表示されます。

PCharacter.maxHP <- "\(newCharHP)"
PCharacter.maxMP <- "\(newCharMP)"

二項演算子 '<-' は、タイプ 'Expression' および 'String' のオペランドには適用できません

あなたmaxHPmaxMP列はですがInt64、文字列値に設定しています。newCharHPnewCharMPが両方であることを確認しInt64ます。

于 2015-08-10T11:36:01.573 に答える