Swift函数参数
发布时间:2020-12-14 04:54:14 所属栏目:百科 来源:网络整理
导读:我有一个像下面这样的单身APIService import Foundationimport Alamofireimport SwiftyJSONtypealias Success = JSON - Voidtypealias Failure = NSError? - Voidclass APIService { private let BaseURL = "http://api.openweathermap.org/data/2.5" class
我有一个像下面这样的单身APIService
import Foundation import Alamofire import SwiftyJSON typealias Success = JSON -> Void typealias Failure = NSError? -> Void class APIService { private let BaseURL = "http://api.openweathermap.org/data/2.5" class var instance: APIService { struct Singleton { static let instance: APIService = APIService() } return Singleton.instance } func currentWeather(cityName: String,success:Success?,failure:Failure?) { let url = BaseURL + "/weather" Alamofire.request(.GET,url,parameters:["q" : cityName]) .responseJSON { (_,_,jsonObject,error) in if error != nil && failure != nil { failure!(error) } else { let json = JSON(jsonObject!) if success != nil { success!(json) } else { println(json) } } } } } 虽然我在其他地方调用这个函数,比如UIViewController,就像这样,没关系 import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() APIService.instance.currentWeather("San Gabriel",success: nil,failure: {error in println(error)}) } } 但是当我像这样调用func时,它是编译错误 APIService.instance.currentWeather("San Gabriel",success: {json in println(json)},failure: {error in println(error)}) 0 swift 0x0000000101f2da68 llvm::sys::PrintStackTrace(__sFILE*) + 40 1 swift 0x0000000101f2df54 SignalHandler(int) + 452 2 libsystem_platform.dylib 0x00007fff95838f1a _sigtramp + 26 3 libsystem_platform.dylib 0x00007fff5e9903d8 _sigtramp + 3373626584 4 swift 0x00000001013d1f8c swift::Lowering::SILGenFunction::emitIgnoredExpr(swift::Expr*) + 108 5 swift 0x00000001013f1829 swift::Lowering::SILGenFunction::visitBraceStmt(swift::BraceStmt*) + 297 6 swift 0x00000001013f48e8 swift::ASTVisitor<swift::Lowering::SILGenFunction,void,void>::visit(swift::Stmt*) + 152 7 swift 0x00000001013c0da1 swift::Lowering::SILGenFunction::emitValueConstructor(swift::ConstructorDecl*) + 5617 8 swift 0x000000010139c04a swift::Lowering::SILGenModule::emitConstructor(swift::ConstructorDecl*) + 666 9 swift 0x000000010139d8bb swift::SILModule::constructSIL(swift::Module*,swift::SourceFile*,swift::Optional<unsigned int>) + 475 10 swift 0x000000010139d968 swift::performSILGeneration(swift::SourceFile&,swift::Optional<unsigned int>) + 72 11 swift 0x0000000101273e18 frontend_main(llvm::ArrayRef<char const*>,char const*,void*) + 3432 12 swift 0x000000010127196d main + 1677 13 libdyld.dylib 0x00007fff93e515c9 start + 1 Stack dump: 0. Program arguments: 1. While silgen emitConstructor SIL function @_TFVSC20NSJSONReadingOptionsCfMS_FT_S_ for 'init' at <invalid loc> 如果我把函数放在UIViewController中,一切都还好,太有线了,需要帮助 解决方法
我不认为这是答案.
if error != nil && failure != nil { failure!(error) } else { ... 应该 if error != nil { failure ?? failure(error) // or: failure?(error) } else { ... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |