簡體   English   中英

在objective-c中使用swift中的類實例

[英]Use class instance from swift in objective-c

我想使用在我的 Swift 文件中初始化的類實例中的數據,在我的 Objective-C 文件中。 我對 Objective-C 很陌生,但似乎我在 .swift 或 .m 中初始化的類只能從該文件類型訪問?

有沒有辦法解決? 使用下面的示例,我將如何在objective-c 中訪問examp.number

import Foundation
import UIKit

public var examp: exampleClass = exampleClass();    //create an instance of class

@objc public class exampleClass: NSObject {
var number = 0;

}

如果沒有,有沒有辦法將 .swift 實例復制到 .m 實例?

如果沒有,有沒有辦法將數據從 .swift 實例復制到其他東西,然后將其復制到 .m 實例?

你可以用你的方法之一examp斯威夫特的實例ExampleClass在你的Objective-C代碼是由它傳遞給一個Objective-C的功能。 這是一個快速示例。

SWIFT代碼:

    @objc class ExampleClass: NSObject {
        var number = 123;

    }

    var examp: ExampleClass = ExampleClass();    //create an instance of class

    print("The value of examp.number before the call: \(examp.number)")
    MyClassObjC.junkfun(examp) // Call Objective-C method that will change ExampleClass.number
    print("The value of examp.number after the call: \(examp.number)")

Objective-C 頭文件,這必須通過橋接頭文件對 Swift 可用:

@class ExampleClass;

@interface MyClassObjC : NSObject 

+(void)junkfun:(ExampleClass*)ec;

@end

這是 Objective-C 實現 (.m):

#import "cli_swift-Swift.h"  // Important: this header is auto-generated; replace cli_swift with
                             // your product name.

@implementation MyClassObjC : NSObject 

+(void)junkfun:(ExampleClass*)ec
{
    puts("In junkfun");
    ec.number = 321;
}

@end

輸出應該是這樣的:

The value of examp.number before the call: 123
In junkfun
The value of examp.number after the call: 321

這只是一個簡單的例子。 請參閱https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/了解更多信息。

請注意, NSObject繼承在這里很重要。

暫無
暫無

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

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