0

我想从数组中读取数据并将数据写入文件,反之亦然。文件本身具有已知路径。

该类BTTableCell管理和填充tableView. 我正在使用dati_Riga类来拥有一个数组。我认为使用 WriteToFile 读取和保存数据以写入数据和 NSMutableArray 读取它们会更容易,但我遇到了麻烦。

ViewController文件的以下代码片段中,您可以看到我为打开和保存不起作用的数据而编写的函数。

我哪里做错了?我的想法是使用保存数据,BTTableCell但我无法使其工作。

数据结构:

import Cocoa

class BPTableCell:NSTableCellView {

    @IBOutlet weak var item_IconaFile: NSImageView!
    @IBOutlet weak var item_NomeFile: NSTextField!
    @IBOutlet weak var item_PathFile: NSTextField!
    @IBOutlet weak var item_MD5: NSTextField!
    @IBOutlet weak var item_SHA1: NSTextField!
}

class dati_Riga {
    var dati_Riga_item_IconaFile: NSImage!
    var dati_Riga_item_NomeFile: String!
    var dati_Riga_item_PathFile: String!
    var dati_Riga_item_MD5: String!
    var dati_Riga_item_SHA1: String!
        init (dati_Riga_item_IconaFile: NSImage, dati_Riga_item_NomeFile: String, dati_Riga_item_PathFile: String, dati_Riga_item_MD5: String, dati_Riga_item_SHA1: String)
        {
            self.dati_Riga_item_IconaFile = dati_Riga_item_IconaFile
            self.dati_Riga_item_NomeFile = dati_Riga_item_NomeFile
            self.dati_Riga_item_PathFile = dati_Riga_item_PathFile
            self.dati_Riga_item_MD5 = dati_Riga_item_MD5
            self.dati_Riga_item_SHA1 = dati_Riga_item_SHA1
        }
}

摘自“ViewController.swift”:

import Cocoa
import Foundation
import AppKit
import CryptoSwift

class ViewController: NSViewController, NSTableViewDataSource, NSTableViewDelegate {

@IBOutlet weak var tableview: NSTableView!

var item_IconaFile = [NSImage]()
var item_NomeFile = [String]()
var item_PathFile = [String]()
var item_MD5 = [String]()
var item_SHA1 = [String]()

var miei_Dati_Riga : [dati_Riga] = [dati_Riga(dati_Riga_item_IconaFile: NSImage(), dati_Riga_item_NomeFile: "", dati_Riga_item_PathFile: "", dati_Riga_item_MD5: "", dati_Riga_item_SHA1: "")]

override func viewDidLoad() {
    super.viewDidLoad()
    self.miei_Dati_Riga.removeAtIndex(0)
}

override var representedObject: AnyObject? {
    didSet {
    // Update the view, if already loaded.
    }
}


 // MARK: Funzioni relative la TableView

func tableView(tableView: NSTableView, viewForTableColumn tableColumn: NSTableColumn?, row: Int) -> NSView? {

    let result : BPTableCell = tableView.makeViewWithIdentifier(tableColumn!.identifier, owner: self) as! BPTableCell

    result.item_IconaFile.image = item_IconaFile[row]
    result.item_NomeFile.stringValue = item_NomeFile[row]
    result.item_PathFile.stringValue = item_PathFile[row]
    result.item_MD5.stringValue = item_MD5[row]
    result.item_SHA1.stringValue = item_SHA1[row]

    return result
}

func numberOfRowsInTableView(tableView: NSTableView) -> Int {
    let num_Righe = item_NomeFile.count
    return num_Righe
}

// MARK: Apri e Salva file
@IBAction func Save_File(sender: NSMenuItem) {
    let salva_File = NSSavePanel()
    salva_File.extensionHidden = true
    salva_File.canSelectHiddenExtension = true
    salva_File.allowedFileTypes = ["cpa"]
    salva_File.beginWithCompletionHandler { (result:Int) -> Void in
        if result == NSFileHandlingPanelOKButton {
            let save_URL_File = salva_File.URL

            let mio_Array: NSArray = self.miei_Dati_Riga
            print(self.miei_Dati_Riga.count)
            print(self.miei_Dati_Riga[0])
            if mio_Array.writeToFile((save_URL_File?.path)!, atomically: true) {
                print("File Salvato")}
            else {
              print("File Non Salvato")
            }
        }
    }
}

@IBAction func Open_File(sender: NSMenuItem) {
    let apri_File = NSOpenPanel()
    apri_File.allowedFileTypes = ["cpa"]
    apri_File.beginWithCompletionHandler { (result:Int) -> Void in
        if result == NSFileHandlingPanelOKButton {
            let contenuto_File = NSMutableArray (contentsOfURL: apri_File.URL!)
        self.tableview.reloadData()
        }
    }

}

4

0 回答 0