2015-10-07 3 views
0

Я пытаюсь взять данные из UITableView, который является var toDoItems:[String] = []. Я пытаюсь взять эти данные и преобразовать их в CSV-файл для отправки по электронной почте. Я не могу найти текущую информацию об этом с помощью Xcode 7 и Swift 2. Все, что я нашел, это Objective C. Я новичок в программировании, поэтому попытка конвертировать Objective C в Swift 2 мне тяжело. Я поговорил с моим приятелем, который сказал взять мои данные UITableView и преобразовать его в NSMutableString. Затем конвертируйте мой NSMutableString в NSData. Он сказал, что NSData можно записать в файл CSV.Возьмите NSMutableString и конвертируйте в CSV-файл по электронной почте

Одна часть кода:

// Helps to have it APPEAR when adding new items ** 
override func viewWillAppear(animated: Bool) { 

    // Checks to see if there are any past items to boot up with 
    if let storedtoDoItems : AnyObject = savedDefaults.objectForKey("toDoItems") { 

     //If there are, it sets the array to nothing 
     toDoItems = [] 

     for var i = 0; i < storedtoDoItems.count; ++i { 
      toDoItems.append(storedtoDoItems[i] as! String) 

      // Convert stored tableView data to string 
      incomingString = String(toDoItems) 
     } 
    } 
    tasksTable.reloadData() 
} 

я следующие переменные объявлены:

var toDoItems:[String] = [] 
var convertString: NSString! 
var convertMutable: NSMutableString! 
var incomingString: String = "" 
var datastring: NSString! 

Вот моя кнопка экспорта Действие:

// PDF Button 
@IBAction func pdfExport(sender: AnyObject) { 

    // Convert tableView String Data to NSMutableString if needed 
    convertMutable = NSMutableString(UTF8String: incomingString) 
    print("NSMutableString: \(convertMutable)") 

    // Convert tableView String Data to NSString if needed 
    convertString = String(incomingString) 
    print("NSString: \(convertString)") 

    // Convert above NSString to NSData 
    let data = convertString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false) 
    if let d = data { // Unwrap since data is optional and print 
     print("NSData: \(d)") 
    } 
    // Convert NSData back to NSString to verify NSData was actual data and test 
    datastring = NSString(data:data!, encoding:NSUTF8StringEncoding) as! String 
    print("Back to NSString: \(datastring)") 

} 

Может кто-то пожалуйста, помогите мне с примерами, как это сделать с Swift 2? Спасибо.

ответ

0

Так что некоторые исследования и выяснили.

Код для @IBAction func я поставил:

// CSV Export Button 
@IBAction func csvExport(sender: AnyObject) { 
    // Convert tableView String Data to NSMutableString 
    convertMutable = NSMutableString(); 
    for item in toDoItems 
    { 
     convertMutable.appendFormat("%@\r", item) 
    } 

    print("NSMutableString: \(convertMutable)") 

    // Convert above NSMutableString to NSData 
    let data = convertMutable.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false) 
    if let d = data { // Unwrap since data is optional and print 
     print("NSData: \(d)") 
    } 

    //Email Functions 
    func configuredMailComposeViewController() -> MFMailComposeViewController { 
     let mailComposerVC = MFMailComposeViewController() 
     mailComposerVC.mailComposeDelegate = self 
     mailComposerVC.setSubject("CSV File Export") 
     mailComposerVC.setMessageBody("", isHTML: false) 
     mailComposerVC.addAttachmentData(data!, mimeType: "text/csv", fileName: "TodoList.csv") 

     return mailComposerVC 
    } 

    // Compose Email 
    let mailComposeViewController = configuredMailComposeViewController() 
    if MFMailComposeViewController.canSendMail() { 
     self.presentViewController(mailComposeViewController, animated: true, completion: nil) 
    } else { 
     self.showSendMailErrorAlert() // One of the MAIL functions 
    } 
} 

Я также добавил эти две функции для электронной почты:

// Mail alert if user does not have email setup on device 
func showSendMailErrorAlert() { 
    let sendMailErrorAlert = UIAlertView(title: "Could Not Send Email", message: "Your device could not send e-mail. Please check e-mail configuration and try again.", delegate: self, cancelButtonTitle: "OK") 
    sendMailErrorAlert.show() 
} 
// MARK: MFMailComposeViewControllerDelegate Method 
func mailComposeController(controller: MFMailComposeViewController, didFinishWithResult result: MFMailComposeResult, error: NSError?) { 
    controller.dismissViewControllerAnimated(true, completion: nil) 
} 

Он работал великий и создал файл CSV и прикрепленным его по электронной почте , открыв приложение «Почта», готовое для адреса «Кому». Это для Swift 2 и Xcode 7.

Смежные вопросы