gpt4 book ai didi

objective-c - 尝试在 objective-c 类中使用 swift 对象时“init”不可用

转载 作者:行者123 更新时间:2023-12-05 03:56:38 26 4
gpt4 key购买 nike

我有一个 swift 对象,但是当我尝试在 objective-c 类中使用它时,我得到 'init' is unavailable,这是为什么?

我的 Swift 类如下所示:

import Foundation

@objc public class OsonOptions : NSObject {
@objc var isWebview: Bool
@objc var key: String
@objc var token: String
@objc var products : Array<String>
var env: Environment
@objc var clientName: String
public init(isWebview: Bool,key: String,token: String,products:Array<String>,env: Environment,clientName: String) {
self.isWebview = isWebview
self.key = key
self.token = token
self.products = products
self.env = env
self.clientName = clientName
}
}

我使用它的 objective-c 类如下所示:

#import "MyFancyLibrary.h"
#import <OsonWidget/OsonWidget-Swift.h>

@implementation MyFancyLibrary
RCT_EXPORT_MODULE()
RCT_EXPORT_METHOD(greetings:(RCTResponseSenderBlock)callback){

OsonOptions *osonOptions = [[OsonOptions alloc] init];

NSString* someString = @"random";
callback(@[someString]);
}
@end

这是有错误的代码行:OsonOptions *osonOptions = [[OsonOptions alloc] init];

最佳答案

根据 Swift 初始化规则,所有属性都必须在创建实例时进行初始化。因此,默认初始化程序 init() 不会暴露给 ObjC。

您必须使用指定的初始化程序 init(isWebview:key:token:products:env:clientName:) 或为所有属性分配默认值。

关于objective-c - 尝试在 objective-c 类中使用 swift 对象时“init”不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59175693/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com