gpt4 book ai didi

ios - 将代码从 objective c 转换为 swift 时的常见函数问题

转载 作者:搜寻专家 更新时间:2023-11-01 05:31:35 25 4
gpt4 key购买 nike

目前,我一直致力于将代码从 objective c 转换为 swift。工作进行得很顺利,直到我遇到了一个在 objective-c 中工作的通用可重用代码,但我不知道我应该如何快速地做到这一点。

在 objective-c 中工作的场景是。

我的 dataManager 类中有一个通用函数

- (void)saveRequest:(id)request forId:(NSNumber *)requestId {

WebRequest *requestData = [[WebRequest alloc] initWithEntity:[NSEntityDescription entityForName:WEB_REQUEST inManagedObjectContext:self.context] insertIntoManagedObjectContext:self.context];
requestData.data = [request toJSON];
requestData.requestId = requestId;
requestData.timestamp = [NSDate date];

[self save];
}

在我的项目中,已经创建了包含 toJSON 函数的请求类。根据用户更改从我的 Controller 创建请求对象并将请求对象传递给此函数,此函数调用请求类中的 toJSON 函数,一切都在 objective-c 中工作。

但是当我在 swift 中转换这个函数时,它不支持 id 作为函数输入变量,如果我使用 Any 代替 id 那么它会给出一个错误,指出 Any 没有任何 toJSON 函数。

由于此功能是通用的,不同的请求对象将来自不同的 Controller 。我不知道我应该如何进一步听取,如果有人有任何想法请帮助我

最佳答案

你的课应该是这样的

class WebRequest:NSObject
{
var data :Data?
var requestId: NSNumber?
var timestamp: Date?
init(entity:String , insertIntoManagedObjectContext:NSManagedObjectContext)
{
//your code here
}
}

你的代码如下

    func saveRequest(request:Request, requestId:NSNumber)
{

let requestData = WebRequest(entity: "entityName", insertIntoManagedObjectContext:self.context)
requestData.data = request.toJSON();
requestData.requestId = requestId;
requestData.timestamp = Date()

}

和存在 toJson() 的 Request 类

class Request: NSObject
{
//has some members
func toJSON()->Data
{

return Data()
}
}

关于ios - 将代码从 objective c 转换为 swift 时的常见函数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58263817/

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