0

我正在使用IBM Watson API - Alchemy Data 新闻

问题是,我正在使用 swift - 目标 C 桥接,在两者之间我被困在返回值的函数中。如何在我的目标 C 代码中使用该值?

这是我的快速课程

@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类中调用这个函数。

@property (strong, nonatomic) AlchemyDataNews *getnews;

-(void)loadNews
{
   self.getnews = [[AlchemyDataNews alloc]init];
   [self.getnews getNewsList];

}

但是现在该怎么办?这只会调用函数而不给我响应,以便我可以将它放入数组并显示在 tableview 中。

4

2 回答 2

2

我认为问题是getNewsList返回一个实例NewsResponse,你应该将它存储在一个变量中然后使用它。

self.getnews = [[AlchemyDataNews alloc]init];
NewsResponse *newResponse = [self.getnews getNewsList];

// now you can use 'newResponse'
// ...

希望有帮助。

于 2016-10-13T09:05:47.990 回答
2

类型(NewsResponse及其主要属性NewsResult)是 a struct。不幸的是,Swift 的struct类型没有桥接到 Objective-C。要使用 Swift-to-Objective-C 桥接,您需要编写 Swift 代码来进一步处理该NewsResponse类型。

例如,您可以从每个NewsResponse您感兴趣的信息中选择信息并将这些值存储在 Swift 中Dictionary(它连接到 Objective-C NSDictionary)。或者,您可以向 Swift 公开表格视图并编写 Swift 代码来填充它。

希望有帮助!

于 2016-10-13T12:19:29.097 回答