ios - programacion - swift(lenguaje de programación)
El método Objective-C entra en conflicto con el método de requisitos opcionales Swift (5)
El tipo del parámetro launchOptions de la función didFinishLaunchingWithOptions se modificó en XCode 6.3:
"launchOptions: NSDictionary?" se ha convertido en "launchOptions: [NSObject: AnyObject]?"
Simplemente cambie el encabezado de su función para que coincida con lo siguiente:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool
Después de la actualización de Xcode, el compilador comenzó a arrojar un error en el código de trabajo (ambas funciones están en AppDelegate.swift).
func application(application: UIApplication,
didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool
{
FBLoginView.self
FBProfilePictureView.self
return true
}
Con error:
/Users/../AppDelegate.swift:14:11: Objective-C method ''application: didFinishLaunchingWithOptions:'' provided by method ''application ( : didFinishLaunchingWithOptions :)'' entra en conflicto con el método de requisito opcional ''application ( : didFinishLaunchingWithOptions :)'' en el protocolo ''UIApplicationDelegate''
Y segundo
func application(application: UIApplication,
openURL url: NSURL,
sourceApplication: NSString?,
annotation: AnyObject) -> Bool {
var wasHandled:Bool = FBAppCall.handleOpenURL(url, sourceApplication: sourceApplication as! String)
return wasHandled
}
con error
/Users/../AppDelegate.swift:25:11: Objective-C method ''application: openURL: sourceApplication: annotation:'' provided by method ''application ( : openURL: sourceApplication: annotation :)'' entra en conflicto con el método de requisitos opcionales ''application ( : openURL: sourceApplication: annotation :) ''en el protocolo'' UIApplicationDelegate ''
Entiendo que lo más probable es que me gustaría que se unieran de alguna manera estas dos funciones en una sola. No entiendo por qué este código de repente dejó de funcionar en 6.3, a pesar del hecho de que funcionó en 6.2.
Intente anular ese método nuevamente desde las terminaciones de Xcode. Trabajó para mi.
No estoy seguro de por qué el compilador arroja el error, sin embargo, veo una diferencia en la versión Swift predeterminada de esos mismos métodos. Quizás podría reemplazar la declaración de función con las creadas con un proyecto Swift normal:
1
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool
2
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool
Recomiendo reemplazar las declaraciones de sus métodos con las de arriba para ver si se compila ahora.
EDIT 1 (21/09/2015): Confirmé que ahora están actualizados para el lanzamiento público de Xcode 7. Quitaron el opcional ( annotation: AnyObject?
) Y lo hicieron ( annotation: AnyObject
), en la declaración # 2.
También debe asegurarse de estar usando el tipo correcto. Use String en lugar de NSString .
launchOptions ha sido cambiado; intente cambiar "launchOptions: NSDictionary?" a "launchOptions: [NSObject: AnyObject]?"
¡Espero que esto ayude!