【问题标题】:Convert String to Array Character将字符串转换为数组字符
【发布时间】:2017-07-12 14:24:48
【问题描述】:

我在 Xcode 8 和 Swift 3 中创建了一个 Puzzle Word 项目,我创建了 SQLite 文件和 plist 文件,SQLite 文件有 3 列 id、问题和答案,所有这些列都是(字符串),当然除了 id 它是一个整数,我的 plist 文件是字符数组,我的问题是如何将第 3 列(答案)从字符串转换为数组字符,如不带引号和方括号的 plist?! 这是我连接 SQLite 数据库(DatabaseHelper)的代码

import GRDB

class DatabaseHelper {

    var dbQueue: DatabaseQueue = {

        var db: DatabaseQueue = DatabaseQueue()

        do {

            db = try DatabaseQueue(path: Bundle.main.path(forResource: "testDB", ofType: "sqlite")!)
            print("Connect database sqlite is OK...")

        } catch {

            print("Connect databse fail !!!")

        }

        return db

    }()

    func getDatabase(rowId: Int) -> [DatabaseModel] {

        var listDatabase = [DatabaseModel]()

        dbQueue.inDatabase { db in

            do {

                for row in try Row.fetchAll(db, "select * from QuestionTable where Id = \(rowId)") {

                    let newDatabase = DatabaseModel()
                    newDatabase.id = row.value(named: "Id") as Int
                    newDatabase.ques = row.value(named: "question") as String
                    newDatabase.ans = row.value(named: "answer") as String

                    listDatabase.append(newDatabase)

                }

            } catch {

                print("Get all database fail !!!")

            }

        }

        return listDatabase

    }

}

这段代码是DatabaseModel:

import Foundation

class DatabaseModel: NSObject {

    var id: Int?
    var ques: String?
    var ans = String()

}

此代码从数据库调用:

var dbHelpr = DatabaseHelper()
var listdata = [DatabaseModel]()

let pathRes = Bundle.main.path(forResource: fileName, ofType: fileExt)
        let pathDict = NSDictionary(contentsOfFile: pathRes!)
        var letters : [String] = pathDict?.object(forKey: "Letters") as! [String]
        listdata = dbHelpr.getDatabase(rowId: id)

//        print("\(letters.shuffled())")

        for data in listdata {

            let dataAnswer : String = data.ans

            let dataArrayAnswer = Array(dataAnswer.characters)
            print(dataAnswer)
            let lastLetters = letters.append(String(describing: dataArrayAnswer))
            print(lastLetters)

        }

这是我在控制台中的输出:

enter image description here

【问题讨论】:

  • 你想解决什么问题?
  • 我的问题我想将我的字符串从 Sqlite 数据库转换为数组字符@BallpointBen
  • 您要解决的更大的问题是什么?

标签: ios swift string sqlite char


【解决方案1】:
let myString = "This is my answer"
let chars = Array(myString)

根据问题的标题,我发布此代码,因为它符合从字符串中生成字符数组的要求。

所以根据您的代码,您几乎就在那里,但只需删除 String 的 characters 属性,因为它已经是 Sequence :)

let dataArrayAnswer = Array(dataAnswer)

for char in dataArrayAnswer{
//Prints next char of whatever your string is...
print(char)
}

编辑:另一种方法可能是这样,因为它将字符数组转换为字符串数组:

let dataArrayAnswer: [String] = dataAnswer.characters.map{String($0)}

【讨论】:

  • 谢谢,但是当我删除字符时告诉我错误(无法使用类型为“(字符串)”的参数列表调用类型“数组<_>”的初始化程序)!我该如何解决这个问题?!
  • 你使用的是哪个 Swift 版本?
  • 我正在使用 Swift 3
  • 请在 cmets 中提供您在此处遇到的代码和错误的完整图像
  • 对于 listdata 中的数据 { let dataAnswer : String = data.ans let dataArrayAnswer = Array(dataAnswer) for char in dataArrayAnswer { tileButton.setTitle(lettersAns.appending(String(describing:char)), for : .normal) } }
猜你喜欢
  • 2011-06-18
  • 2017-11-27
  • 2011-02-15
  • 1970-01-01
相关资源
最近更新 更多