У меня есть два тестовых приложения: App1 & App2.Связь между приложениями в iOS с использованием схемы URL
App1 принимает строку из текстового поля и вызывает метод:
@IBAction func openApp(sender: AnyObject) {
let url1 = ("app2://com.application.started?displayText="+textToSend.text!)
let url2 = url1.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())
UIApplication.sharedApplication().openURL(NSURL(string: url2!)!)
}
Что на самом деле открывает app2, который имеет только метку, которая должна изменить в тексте посланного через URL, код находится в пределах AppDelegate.swift:
func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool {
let url = url.standardizedURL
let query = url?.query
ViewController().labelToDisplayResult.text = query
return true;
}
к сожалению, линия, где я пытаюсь передать результат URL к фактической этикетке дает мне эту ошибку:
EXC_BAD_INSTRUCTION (CODE=EXC_I386_INVOP SUBCODE=0x0)
Однако я все данные в App2 наверняка, как я могу видеть их значения в отладчике:
url NSURL "app2://com.application.started?displayText=564315712437124375" 0x00007fa4e3426320
query String? "displayText=564315712437124375"
Любая идея, почему я получаю эту ошибку?
Благодаря ...
Спасибо, я ве ry new для любой разработки iOS и Swift, как я могу получить значение формы AppDelegate для ViewController, если я хочу отображать значение, прошедшее через схему URL? –
@JakubZak Посмотрите, что я обновляю – Leo
Это порождает ошибку, но, в любом случае, спасибо, очень хороший момент, что мне нужно думать об обоих состояниях. –