2015-02-27 3 views
0

Я в основном пытаюсь передать данные из ячейки UITableView, от одного контроллера представления до моего второго диспетчера представлений при удалении ячейки из первого диспетчера представлений.Передача данных из ячейки UITableView в другой UITableView VC? (Swift)

Вот код для моего первого класса ViewController пытается передать данные Tableview в массив в моем другом классе ViewController:

var deletedProperty: [String] = [] 
var storedDeletion: [String] = [] 

func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { 

    if(editingStyle == UITableViewCellEditingStyle.Delete){ 
     storedDeletion.append(deletedProperty[indexPath.row]) 
     taskMgr.tasks.removeAtIndex(indexPath.row) 
     tblTasks.reloadData(); 
    } 

} 

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "YourIdentifier" { 
     let destination = segue.destinationViewController as ThirdViewController; destination.secondTaskMgr = storedDeletion 
    } 
} 

Вот код для моего другого класса ViewController, содержащего массив:

var secondTaskMgr: SecondTaskManager = SecondTaskManager() 

struct secondTask { 
    var passedName = "" 
} 

class SecondTaskManager: NSObject { 
    var secondTasks = [secondTask]() 

    func secondAddTask(name: String){ 
     secondTasks.append(secondTask(passedName: name)) 
    } 
} 

В первом классе ViewController я получаю ошибку

'NSArray' is not a subtype of 'ThirdViewController.SecondTaskManager'" 

по адресу

let destination = segue.destinationViewController as ThirdViewController;  
destination.secondTaskMgr = storedDeletion 

В чем проблема и как его исправить? И есть ли лучший способ сделать это?

ответ

0

secondTaskMgr является SecondTaskManager.

storedDeletion является [String].

Вы пытаетесь присвоить [String] свойство SecondTaskManager.

Вы не можете этого сделать.

+0

Спасибо. Кроме того, как бы вы сделали эту работу полностью? – wibbed

0

Вы можете использовать NSUserDefaults.

FirstViewController.swift

let param: String = "ParamOne" 
NSUserDefaults.standardUserDefaults().setObject(param, forKey:"paramId") 
NSUserDefaults.standardUserDefaults().synchronize() 

SecondViewController.swift

let param = NSUserDefaults.standardUserDefaults().stringForKey("paramId") 
Смежные вопросы