簡體   English   中英

如何將數據從Objective C傳遞給Swift?

[英]How do you pass data from Objective C to Swift?

如何將數據對象從Objective C文件傳遞到Swift文件?

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{

    if([[segue identifier] isEqualToString: @"details"]){
    //create the swift file and set the property I want to pass here


    }

}

在迅速視圖中:

import Foundation
import UIKit
import CoreLocation


public class SwiftViewController: UIViewController{

    var passedObject:NPSCustomObject!

    public override func viewDidLoad() {

    }

我更喜歡使用NotificationCenter:

目標C到斯威夫特

目標C.

NSDictionary *myData = @{@"data1" : @"value1", @"data2": @"value2"};
[[NSNotificationCenter defaultCenter] postNotificationName:@"myNotificationName" object:nil userInfo:myData];

迅速

NotificationCenter.default.addObserver(forName:NSNotification.Name(rawValue: "myNotificationName"), object:nil, queue:nil, using:yourFunction)

func yourFunction(notification:Notification) -> Void {
 if let extractInfo = notification.userInfo {
             print(" my data: \(extractInfo["data1"])");
        }
    }

我發現NSUserDefaults有一些'hack'保存數據:

Objective-C類:

NSString *myObjcData = @"from Objective-C";

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setValue:myObjcData forKey:@"data"];
[defaults synchronize];

Swift類:

let prefs:NSUserDefaults = NSUserDefaults.standardUserDefaults()

override func viewDidLoad() {

    super.viewDidLoad()

    // Receive data ---> with NSUserdefaults
    let mySwiftData: AnyObject? = prefs.valueForKey("data")
    println("data is \(mySwiftData)")

}

它不是很優雅,但我保證它有效! 希望能幫助到你。

如果故事板中的“詳細信息”segue被設置為傳遞給SwiftViewController類型的視圖控制器(它應該是您已經暗示過的工作流程),那么您不會創建后者的實例 - segue具有已經為你完成了。 您可以在prepareForSegue作為segue.destinationViewController訪問它。

假設你的項目已經設置了正確的標題,用於將Swift橋接到(Obj)C ,你只需要將segue.destinationViewController轉換為你正在使用的類型,這樣你就可以訪問它的成員了。 例如:

if([[segue identifier] isEqualToString: @"details"]){
    SwiftViewController *vc = (SwiftViewController *)segue.destinationViewController;
    vc.passedObject = // put your instance of NPSCustomObject here
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM