使用无法解析的标识符“ self”(CoreData)

时间:2020-09-11 03:31:51

标签: swift xcode

我在下面使用此行:

self.present(activityViewController, animated: true, completion: nil)

我得到一个错误-使用未解决的标识符'self'。关于如何解决这个问题的任何想法?在我看来,它似乎属于班级,但显然做错了什么。任何帮助将不胜感激。

  import UIKit
import CoreData



class CoreDataViewController: UIViewController {
  
    
    @IBOutlet weak var CoreDataView: UITableView!
    
    let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext

    var items:[Checkins]?

    var btnnames = [""]
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
//        CoreDataView.dataSource = self
//        CoreDataView.delegate = self

        storeTranscription()
         // Loads the current data
         getTranscriptions()
        
//        fetchCheckins()
        
        let btn1name = btnnames[0]
        let btn2name = btnnames[1]
        let btn3name = btnnames[2]
        let btn4name = btnnames[3]
        let btn5name = btnnames[4]
        let btn6name = btnnames[5]
        
//        print(btnnames)
        print(btn1name, btn2name, btn3name, btn4name, btn5name, btn6name)
    
    }

    @IBAction func export(_ sender: Any) {
         exportDatabase()
    }
    
    @IBOutlet weak var Table_label: UILabel!
    }

    var CheckinDate: Date? = Date()
    var fetchedStatsArray: [NSManagedObject] = []
    let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext


    func storeTranscription() {
        //retrieve the entity that we just created
        let entity =  NSEntityDescription.entity(forEntityName: "Checkins", in: context)
        let transc = NSManagedObject(entity: entity!, insertInto: context) as! Checkins

        //set the entity values
        transc.who = "Who"
        transc.reason = "Reason for visit"
        transc.date = CheckinDate

        //save the object
        do {
            try context.save()
            print("saved!")
        } catch let error as NSError  {
            print("Could not save \(error), \(error.userInfo)")
        } catch {

        }
    }

    func getTranscriptions () {
        //create a fetch request, telling it about the entity
        let fetchRequest: NSFetchRequest<Checkins> = Checkins.fetchRequest()

        do {
            //go get the results
            let searchResults = try context.fetch(fetchRequest)
            fetchedStatsArray = searchResults as [NSManagedObject]
            //I like to check the size of the returned results!
            print ("num of results = \(searchResults.count)")
            //You need to convert to NSManagedObject to use 'for' loops
            for trans in searchResults as [NSManagedObject] {
                //get the Key Value pairs (although there may be a better way to do that...
                print("\(trans.value(forKey: "who")!)")
                let mdate = trans.value(forKey: "CheckinDate") as! Date
                print(mdate)
            }

        } catch {
            print("Error with request: \(error)")
        }
    }

    func exportDatabase() {
        let exportString = createExportString()
        saveAndExport(exportString: exportString)
    }


    func saveAndExport(exportString: String) {
        let exportFilePath = NSTemporaryDirectory() + "Checkins.csv"
        let exportFileURL = NSURL(fileURLWithPath: exportFilePath)
        FileManager.default.createFile(atPath: exportFilePath, contents: NSData() as Data, attributes: nil)
        //var fileHandleError: NSError? = nil
        var fileHandle: FileHandle? = nil
        do {
            fileHandle = try FileHandle(forWritingTo: exportFileURL as URL)
        } catch {
            print("Error with fileHandle")
        }

        if fileHandle != nil {
            fileHandle!.seekToEndOfFile()
            let csvData = exportString.data(using: String.Encoding.utf8, allowLossyConversion: false)
            fileHandle!.write(csvData!)

            fileHandle!.closeFile()

            let firstActivityItem = NSURL(fileURLWithPath: exportFilePath)
            let activityViewController : UIActivityViewController = UIActivityViewController(
                activityItems: [firstActivityItem], applicationActivities: nil)

            activityViewController.excludedActivityTypes = [
                UIActivity.ActivityType.assignToContact,
                UIActivity.ActivityType.saveToCameraRoll,
                UIActivity.ActivityType.postToFlickr,
                UIActivity.ActivityType.postToVimeo,
                UIActivity.ActivityType.postToTencentWeibo
            ]

            self.present(activityViewController, animated: true, completion: nil)
            
        }
    }

    func createExportString() -> String {
        var checkinwho: String?
        var checkinreason: String?

        var export: String = NSLocalizedString("who, reason, date \n", comment: "")
        for (index, itemList) in fetchedStatsArray.enumerated() {
            if index <= fetchedStatsArray.count - 1 {
                checkinwho = Checkins.value(forKey: "who") as! String?
                checkinreason = itemList.value(forKey: "reason") as! String?


                let Datevar = Checkins.value(forKey: "date") as! Date
                let whostring = checkinwho
                let reasonstring = checkinreason
                let DateSting = "\(Datevar)"
                export += "\(whostring!),\(reasonstring!),\(DateSting) \n"
            }
        }
        print("This is what the app will export: \(export)")
        return export
    }

1 个答案:

答案 0 :(得分:0)

删除此行上的}

@IBOutlet weak var Table_label: UILabel!
    }

,然后在该文件的末尾加上另一个}。

相关问题