【问题标题】:Expected identifier in function declaration - Objective-C to Swift函数声明中的预期标识符 - Objective-C 到 Swift
【发布时间】:2015-10-11 17:58:34
【问题描述】:

我正在尝试将我的 Objective-C 转换为 Swift - 对这里的错误以及如何处理它有点困惑。我一直在阅读文档,但仍然感到困惑——这是从转换器生成的。有人有什么想法吗?

Objective-C
- (id) init
{
    self = [super init];

    if (!self)
        return nil;

     self.cmRequestsQuery = [[NSMutableArray alloc] initWithCapacity:5];
     self.cmQueryIsRuning = NO;
     self.requestCounter = 0;
     self.serverOfflineOrBadResponse = NO;
     self.userWasLoggedIn = NO;
     self.needToSendPushNotiToken = NO;
     self.noInternetConection = NO;
     self.needToUpdateToken = NO;

    [[reqOperationManager sharedManager] setDelegate:self];

    return self;
}


Swift
func init() -> AnyObject {
    self = super()
    if !self {
        return nil
    }
    self.cmRequestsQuery = NSMutableArray(capacity: 5)
    self.cmQueryIsRuning = false
    self.requestCounter = 0
    self.serverOfflineOrBadResponse = false
    self.userWasLoggedIn = false
    self.needToSendPushNotiToken = false
    self.noInternetConection = false
    self.needToUpdateToken = false
    reqOperationManager.sharedManager().setDelegate(self)
    return self
}

【问题讨论】:

  • 解决了一个问题,它仍然在func init() -> AnyObject { 抱怨“函数声明中的预期标识符。删除“func”部分然后带来错误“一行上的连续声明必须由';'。我相信它来自 AnyObject 方面。

标签: objective-c swift


【解决方案1】:

在 Swift 中,init 方法没有 func 关键字,也没有返回值,并且调用 super 的点不同。

init() {

首先初始化所有实例变量。

self.cmRequestsQuery = NSMutableArray(capacity: 5)
self.cmQueryIsRuning = false
self.requestCounter = 0
self.serverOfflineOrBadResponse = false
self.userWasLoggedIn = false
self.needToSendPushNotiToken = false
self.noInternetConection = false
self.needToUpdateToken = false

然后调用 super(如果需要)来获取实例。

super.init()

然后调用使用self的方法

reqOperationManager.sharedManager().setDelegate(self)

就是这样。

}

在某些情况下,您必须在 init() 之前添加 override 关键字。

更多细节请阅读 Swift 语言指南中关于初始化的章节。这是值得的。

【讨论】:

【解决方案2】:

我遇到了这个问题,因为我试图在我的 swift 类中导入 swift 标头 (import "ProjectName-swift.h")。

【讨论】:

    猜你喜欢
    • 2016-08-21
    • 1970-01-01
    • 2014-07-30
    • 1970-01-01
    • 2011-12-12
    • 1970-01-01
    • 1970-01-01
    • 2014-02-21
    • 1970-01-01
    相关资源
    最近更新 更多