我有一个Swift
应用,其中包含一些Objective-C
代码。它昨天正常工作,但今天早上我更新了XCode
,现在一切都变得糟透了!
首先,在更新之后,我点击了XCode弹出框以允许它将我的应用程序升级到Swift4
。这就是问题的起源。
我有一个名为Swift
的{{1}}类,其中包含以下4个函数(其中包括):
RestClient
然后在我的/ Objective-C /文件夹中,我有一些文件,其中一个名为class func getInstance() -> RestClient {
if (gRestClient == nil) {
let prefs:UserDefaults = UserDefaults.standard
return RestClient(username: prefs.string(forKey: "username")!, password: prefs.string(forKey: "password")!)
}
return gRestClient!
}
class func getUsername() -> String {
if (gUsername == nil) {
let prefs:UserDefaults = UserDefaults.standard
gUsername = prefs.string(forKey: "username")!
}
return gUsername!
}
class func getPassword() -> String {
if (gPassword == nil) {
let prefs:UserDefaults = UserDefaults.standard
gPassword = prefs.string(forKey: "password")!
}
return gPassword!
}
public func getServer() -> String {
return MAIN_SERVER;
}
。在这里,我有这行代码:
RestClientObj.m
你可以看到,我从这里打电话给NSString* url = [NSString stringWithFormat:@"%@/receipt/email/%@/%@/", [[RestClient getInstance] getServer], rrn, emailAddress];
NSString *authStr = [NSString stringWithFormat:@"%@:%@", [RestClient getUsername], [RestClient getPassword]];
。 RestClient.swift
如下:
RestClientObj.h
整个升级也会导致其他问题。我有另一个类有以下错误:
#ifndef RestClientObj_h
#define RestClientObj_h
#endif /* ResClientObj_h */
@interface RestClientObj : NSObject {
}
+(BOOL) sendSMS:(NSString *)rrn mn:(NSString *)mobileNumber;
+(BOOL) sendEmail:(NSString *)rrn mn:(NSString *)emailAddress;
@end
就行:
No visible @interface for 'AppDelegate' declares the selector 'managedObjectContext'
任何人都可以对此有所了解吗?
编辑:这里有appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
NSManagedObjectContext *context = [appDelegate managedObjectContext]; <-ERROR
类的一些代码:
AppDelegate
答案 0 :(得分:0)
关闭这个。
问题是在变量声明之前缺少@obj
标识符,以使其对我的objective-c代码可见,并结合XCode Swift Upgrade向导重命名某些函数。