Objective c 将数据从ViewController传递到NSObject

Objective c 将数据从ViewController传递到NSObject,objective-c,swift,segue,viewcontroller,nsobject,Objective C,Swift,Segue,Viewcontroller,Nsobject,我有一个swift类Jammingue,其中objective-c中有一个NSObject,叫做tryagain。我知道如何使用协议在swift ViewController之间传递数据,但这里添加的元素是NSObject而不是ViewController以及Objective-C元素。人们能否以类似的方式使用协议?这就是我所拥有的: protocol predesignedDelegate{ func sendPredesignedFunction(info: [String]) } cla

我有一个swift类Jammingue,其中objective-c中有一个NSObject,叫做tryagain。我知道如何使用协议在swift ViewController之间传递数据,但这里添加的元素是NSObject而不是ViewController以及Objective-C元素。人们能否以类似的方式使用协议?这就是我所拥有的:

protocol predesignedDelegate{
func sendPredesignedFunction(info: [String])
}

class Jammingue: NSViewController{
var delegate: passDelegate? = nil
var predesignedArray = []

func doDelegateStuff(){
    if let delegate = delegate{
        delegate.sendPredesignedFunction(predesignedArray)

    }

}
override func prepareForSegue(segue: NSStoryboardSegue, sender: AnyObject?) {
    if let second = segue.destinationController as?  SecondViewController{
        second.representedObject = predesignedArray
    }
}`

问题是destinationController仅适用于ViewController,在segue的另一端,在objective-c NSObject中,我无法使用相同的命令检索数据。有什么办法可以做我想做的吗?

你的问题不是很清楚。我想你问的是如何在一个序列中的视图控制器之间传递一个自定义对象,它是NSObject的一个子类

如果您有NSObject的自定义子类,则使用该类类型而不是NSObject。Objective-C标题可能如下所示:

@interface MyCustomNSObject: NSObject

@property (nonatomic, strong) //properties of your object go here...

- (void) someMethod;  //your object's method(s) go here.
@end
然后在Swift代码中,将对象声明为MyCustomNSObject类型,而不是NSObject类型:

在SecondViewController类中,声明该自定义类型的属性:

class SecondViewController: NSViewController
{
  var theCustomObject: MyCustomNSObject
  //The other stuff for SecondViewController goes here
}
然后在你的Jammingue课上:

class Jammingue: NSViewController
{
  var tryAgain: MyCustomNSObject

  // blah blah blah...
  override func prepareForSegue(segue: NSStoryboardSegue, sender: AnyObject?) 
  {
    if let second = segue.destinationController as?  SecondViewController
    {
        second.representedObject = predesignedArray
      second.customObject = tryAgain
    }
  }
}

现在,您的Jammingue类和SecondViewController类都有MyCustomNSObject类型的实例变量,因此您可以将自定义对象传递给目标视图控制器。

感谢您发布了如此详尽的答案。看起来它会起作用的!谢谢,幸运的是,我不认为这完全是我要问的。我所寻找的只是能够引用ViewController中相应NSObject中初始化和定义的变量,可能比您发布的要简单。什么意思“…在其相应NSObject中…”?有一个NSObject作为我的ViewController的子类,我希望viewController能够将数据传递给NSObject。这仍然没有意义。NSObject不能是视图控制器的子类。这就像说你是你自己的祖母。您的意思是视图控制器有一个NSObject作为实例变量吗?