如何将此Objective-C代码转换为Swift

问题描述:

我是Swift的新手,我试图将这行代码从Objective-C转换为Swift。这里的Objective-C代码:如何将此Objective-C代码转换为Swift

首先,客观C代码的条件和位置是这样的:

NSString *term = [[NSUserDefaults standardUserDefaults] valueForKey:@"term"] ?: defaultTerm; 
NSString *location = [[NSUserDefaults standardUserDefaults] valueForKey:@"location"] ?: defaultLocation; 

我翻译成这样迅速的(这我不知道如何计算的:defaultTerm)

var term: AnyObject? = NSUserDefaults.standardUserDefaults().valueForKey("term"); 
    var location: AnyObject? = NSUserDefaults.standardUserDefaults().valueForKey("location"); 
    var ApiSample:YPAPISample = YPAPISample(); 

而且这是在目标C的查询: [APISample queryTopBusinessInfoForTerm:术语位置:位置completionHandler:^(的NSDictionary * topBusinessJSON,NSError *错误){

Parameters

当我输入我的SWIFT代码,它出来像这样

APISample.queryTopBusinessInfoForTerm(term, location: location) { (topBusinessJSON, error) -> Void in 
     code 
    } 

我试图消除 - >和无效的,但它只是似乎并不喜欢它。

+0

?:变成?? ,,, – gnasher729

+0

没有理由删除 - > Void。如果你把它放在里面,你有什么问题吗? – gnasher729

+0

所以它会是: var term:AnyObject? = NSUserDefaults.standardUserDefaults()。valueForKey(“term”)?? defaultTerm? –

这是行不通的吗?

// cast the results that come back from UserDefaults 

var term: String? = NSUserDefaults.standardUserDefaults().valueForKey("term") as? String 
var location: String? = NSUserDefaults.standardUserDefaults().valueForKey("location") as? String 


APISample.queryTopBusinessInfoForTerm(term, location: location, completionHandler: { (topBusinessJSON: [NSObject: AnyObject]!, error: NSError!) -> Void in 
     //code 
    }) 
+0

“无法用类型为'(AnyObject ?, location:ANyObject?,completionHandler:(NSDictionary !, NSError!) - > Void)'的参数列表调用'queryTopBusinessInfoForTerm'' –

+1

看起来它可能是一个参数问题正在传递什么pameters是否期望的位置和期限是正确的NSObject? – villy393

+0

检查更新的问题请 –