2015-07-21 72 views
-2

我是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? –

回答

0

這是行不通的嗎?

// 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

檢查更新的問題請 –