[英]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.