如何使用 swift 函数表示 returns 一个值 - 在 objective C 中?
How to use swift function that returns a value - in objective C?
我正在使用 IBM Watson APIs - Alchemy Data news
问题是,我正在使用 swift - objective C 桥接,在这两者之间我被 returns 值的函数卡住了。如何在我的 objective C 代码中使用该值?
这是我的swiftclass
@objc class alchemyNews : NSObject {
func getNewsList() -> NewsResponse {
let apiKey = "api-key"
let alchemyDataNews = AlchemyDataNews(apiKey: apiKey)
let start = "now-1d" // yesterday
let end = "now" // today
let query = [
"q.enriched.url.title": "O[IBM^Apple]",
"return": "enriched.url.title,enriched.url.entities.entity.text,enriched.url.entities.entity.type"
]
let failure = { (error: NSError) in print(error) }
alchemyDataNews.getNews(start, end: end, query: query, failure: failure) { news in
print(news)
}
let response : NewsResponse = alchemyDataNews.getNews(start, end: end) { news in
return news
}
return response
}
}
我想要显示 alchemyDataNews.getNews 打印值。所以我在 Objective C class 中以这种方式调用这个函数。
@property (strong, nonatomic) AlchemyDataNews *getnews;
-(void)loadNews
{
self.getnews = [[AlchemyDataNews alloc]init];
[self.getnews getNewsList];
}
但是现在怎么办?这只会调用函数而不给我响应,这样我就可以把它放在数组中并显示在 tableview 中。
我认为问题是 getNewsList
returns NewsResponse
的一个实例,你应该将它存储在一个变量中然后使用它。
self.getnews = [[AlchemyDataNews alloc]init];
NewsResponse *newResponse = [self.getnews getNewsList];
// now you can use 'newResponse'
// ...
希望对您有所帮助。
NewsResponse
type (and its primary property, NewsResult
)是一个struct
。不幸的是,Swift 的 struct
类型无法桥接到 Objective-C。要使用 Swift-to-Objective-C 桥接,您需要编写 Swift 代码来进一步处理 NewsResponse
类型。
例如,您可以从每个 NewsResponse
中选择您感兴趣的信息,并将这些值存储在 Swift Dictionary
中(连接到 Objective-C NSDictionary
)。或者,您可以将 table 视图公开给 Swift 并编写 Swift 代码来填充它。
希望对您有所帮助!
我正在使用 IBM Watson APIs - Alchemy Data news
问题是,我正在使用 swift - objective C 桥接,在这两者之间我被 returns 值的函数卡住了。如何在我的 objective C 代码中使用该值?
这是我的swiftclass
@objc class alchemyNews : NSObject {
func getNewsList() -> NewsResponse {
let apiKey = "api-key"
let alchemyDataNews = AlchemyDataNews(apiKey: apiKey)
let start = "now-1d" // yesterday
let end = "now" // today
let query = [
"q.enriched.url.title": "O[IBM^Apple]",
"return": "enriched.url.title,enriched.url.entities.entity.text,enriched.url.entities.entity.type"
]
let failure = { (error: NSError) in print(error) }
alchemyDataNews.getNews(start, end: end, query: query, failure: failure) { news in
print(news)
}
let response : NewsResponse = alchemyDataNews.getNews(start, end: end) { news in
return news
}
return response
}
}
我想要显示 alchemyDataNews.getNews 打印值。所以我在 Objective C class 中以这种方式调用这个函数。
@property (strong, nonatomic) AlchemyDataNews *getnews;
-(void)loadNews
{
self.getnews = [[AlchemyDataNews alloc]init];
[self.getnews getNewsList];
}
但是现在怎么办?这只会调用函数而不给我响应,这样我就可以把它放在数组中并显示在 tableview 中。
我认为问题是 getNewsList
returns NewsResponse
的一个实例,你应该将它存储在一个变量中然后使用它。
self.getnews = [[AlchemyDataNews alloc]init];
NewsResponse *newResponse = [self.getnews getNewsList];
// now you can use 'newResponse'
// ...
希望对您有所帮助。
NewsResponse
type (and its primary property, NewsResult
)是一个struct
。不幸的是,Swift 的 struct
类型无法桥接到 Objective-C。要使用 Swift-to-Objective-C 桥接,您需要编写 Swift 代码来进一步处理 NewsResponse
类型。
例如,您可以从每个 NewsResponse
中选择您感兴趣的信息,并将这些值存储在 Swift Dictionary
中(连接到 Objective-C NSDictionary
)。或者,您可以将 table 视图公开给 Swift 并编写 Swift 代码来填充它。
希望对您有所帮助!