繁体   English   中英

我如何使用swift在不是当前的视图控制器中显示从数据库中检索到的数据,而在ios中显示另一个

[英]how can i show retrieved data from database in not a present view controller but another one in ios with using swift

我正在主视图控制器中创建数据库,现在我想将其存储的数据检索到下一个视图控制器中,但是我不知道,任何人都可以给我答案。

一个代码块:

override func viewDidLoad()
{
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    let filemgr = NSFileManager.defaultManager()
    let dirPaths =
        NSSearchPathForDirectoriesInDomains(.DocumentDirectory,
                                            .UserDomainMask, true)

    let docsDir = dirPaths[0]
    let path = (docsDir as NSString).stringByAppendingPathComponent("contacts.db")


    databasePath = path

    if !filemgr.fileExistsAtPath(databasePath as String) {

        let contactDB = FMDatabase(path: databasePath as String)

        if contactDB == nil {
            print("Error: \(contactDB.lastErrorMessage())")
        }

        if contactDB.open() {
            let sql_stmt = "CREATE TABLE IF NOT EXISTS CONTACTS (ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT, ADDRESS TEXT, PHONE TEXT)"
            if !contactDB.executeStatements(sql_stmt) {
                print("Error: \(contactDB.lastErrorMessage())")
            }
            contactDB.close()
        } else {
            print("Error: \(contactDB.lastErrorMessage())")
        }
    }

}

使用此代码,我制作了数据库,但是如何再次在下一个视图控制器中检索其数据,我不在同一页面上重复另一页,所以我想显示此页面。

不要在视图控制器中而是在应用程序委托中实现数据库。

例:

// declare global database
var myGlobalDB:FMDatabase?

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    // do your database init stuff here
    ...
    myGlobalDB = FMDatabase(path: databasePath as String)
    ...
}

您的myGlobalDB将可在任何地方使用。

如果您想将数据推送到下一个ViewController,迈克尔说的是正确的,请使用segue。

如果创建变量以将数据保存在SecondViewController中:

var database : FMDatabase?

并在您的prepareForSegue

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "YourIdentifier" {
        if let vc = segue.destinationViewController as? SecondViewController {
            vc.database = self.contactDB
        }
    }
}

更改as? SecondViewController as? SecondViewController为Second View Controller的类名,然后将"your identifier"更改为用于切换到Second View Controller的segue标识符。 如果仅使用1个segue,则不是必需的,但是使用是一种好的做法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM