我在这里疯了。使用Swift调用Objective-C方法3
我想在StackOverflow和其他网站上的一些答案这里调用一个Swift中的Objective-c方法。 但我发现了一些错误初始化的方法...
#error : Cannot convert value of type '()' to specified type 'getEvents'
是因为斯威夫特3的?我在这里做错了什么?
这里是我的全码:
getEvents.h
#import <Foundation/Foundation.h>
@interface getEvents : NSString
+(NSString *) objGetEvents:(NSString *)latitude andLon:(NSString *)longitude andRadius:(NSString *)radius andMeasure:(NSString *)measure;
@end
getEvents.m
#import "getEvents.h"
@implementation getEvents
+(NSString *) objGetEvents:(NSString *)latitude andLon:(NSString *)longitude andRadius:(NSString *)radius andMeasure:(NSString *)measure {
NSString *link = [[NSString alloc] initWithFormat: @"http://some.website/file.php?lat=%@&lon=%@&ms=%@&dist=%@", latitude, longitude, measure, radius];
NSData *myData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:[link stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLFragmentAllowedCharacterSet]]]];
return [[NSString alloc] initWithData:myData encoding:NSUTF8StringEncoding];
}
@end
ListEvents.swift
func getEvents() {
let getEventsObj:getEvents = getEvents()
// error: Cannot convert value of type '()' to specified type 'getEvents'
let jsonString = getEventsObj.objGetEvents(latitude, andLon: longitude, andRadius: searchRadius, andMeasure: searchMeasure) as NSString
// error: Static member 'objGetEvents' cannot be used on instance of type 'getEvents'
print(jsonString)
}
PS。我输入“getEvents.h”中拓桥接-Header.h
我想在这个问题规定的使用,因为NSData的雨燕上的Objective-C的NSData,并得到我的URL的内容: https://stackoverflow.com/questions/40194517/nsdatacontentsof-options-works-on-the-simulator-but-not-on-the-device
为什么你ObjC类和斯威夫特功能具有相同的名称?为什么课程名称以小写字母开头? – user28434
首先尝试将'getEvents'重命名为'GetEvents'。建议该类型以大写字母开头。我猜测有一个与该类型同名的方法至少是问题的一部分。 –
如果你想扩展它,你不能继承NSString - 使用Cathegory。你看NSString不是一个类,它是一个抽象,可以在运行时有很多不同的实现。 – markov