- (id) 来自 Swift 中的 Obj-C Lib?
Posted
技术标签:
【中文标题】- (id) 来自 Swift 中的 Obj-C Lib?【英文标题】:- (id) from Obj-C Lib in Swift? 【发布时间】:2014-06-06 01:29:46 【问题描述】:起初,我在 Obj-C 方面非常非常糟糕(不喜欢语法),但现在我喜欢使用 Swift 开发 iPhone :D
这是我的问题,我尝试使用 Obj-C 库 (xmppframework),但是当我尝试初始化 XMPPRoster 时,所需的方法不可用...
Objective-C 用法:
xmppRosterStorage = [[XMPPRosterCoreDataStorage alloc] initWithInMemoryStore];
xmppRoster = [[XMPPRoster alloc] initWithRosterStorage:xmppRosterStorage];
但在我的 Swift 类中,方法“initWithRosterStorage”不可用:(
斯威夫特:
var jabberRosterStorage: XMPPCoreDataStorage = XMPPCoreDataStorage()
var jabberRoster:XMPPRoster = XMPPRoster(....)
XMPPRoster.m:
- (id)initWithRosterStorage:(id <XMPPRosterStorage>)storage
return [self initWithRosterStorage:storage dispatchQueue:NULL];
也许 Swift 的 (id) 有问题,因为在 Swift 中我认为它现在是 AnyObject
【问题讨论】:
var jabberRoster:XMPPRoster = XMPPRoster(storage : jabberRosterStorage)
给你什么错误?
【参考方案1】:
尝试在 Swift 中像这样初始化它:
var jabberRosterStorage: XMPPCoreDataStorage, XMPPRosterStorage = XMPPCoreDataStorage()
var jabberRoster: XMPPRoster = XMPPRoster(rosterStorage: jabberRosterStorage)
Swift 会将[[Class alloc] initWithVar:variable]
转换为Class(var: variable)
。
Reference
【讨论】:
我已经尝试过了。错误:调用中的参数标签不正确(有 'rosterStorage:',预期为 'dispatchQueue')......但这很奇怪,因为在 XMPPRoster.h 中它定义如下 - ( id)initWithRosterStorage:(idjabberRosterStorage
转换为所需的协议。
我也有同样的问题,请帮忙以上是关于- (id) 来自 Swift 中的 Obj-C Lib?的主要内容,如果未能解决你的问题,请参考以下文章
obj-c 项目错误中的 PagingMenuController swift 库
在swift或obj-c中的uitextview末尾添加一个视图
在 swift 数据模型中使用来自 Objective-C++ 框架的数据类型