2016-05-27 6 views
2

today extensionのデータをアプリに渡すことはできますか? (現在実行されていない場合でも)。 arrayのオブジェクトをメインアプリに渡し、今日の拡張機能から渡されたオブジェクトに基づいてviewControllerをインスタンス化します。私は拡張機能からアプリを開く方法を知っているだけでなく、アプリにデータを送信する方法があまりにもわからない。TodayExtensionのデータをアプリに渡す

var arrayToBePassed: [MyDataSource] 

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) { 
     var url = "" 
     if currentSort == .recent{ 
      url = "ext://recent" 
     }else{ 
      url = "ext://popular"    
     } 
     //HOW DO I PASS arrayToBePassed to my app? 
     let myAppUrl = NSURL(string: url)! 
     extensionContext?.openURL(myAppUrl, completionHandler: { (success) in 
      if (!success) { 
      }else{ 

      } 
     }) 
    } 

答えて

3

あなたがダウンして行くことができるいくつかのルートがあります:

のアプリで

•は、文字通りURLパラメータのいくつかの並べ替えとしてフォーマットオブジェクトの配列を、取ることができURLスキームを実装します。例えばmyAwesomeApp://objectArray=[these, are, strings]。あなたは少し楽しいはずのURLを自分で解析する必要があります。

NSUserDefaultsを参照してください。あなたのアプリと今日の拡張機能の両方が使用できる「共有」ユーザデフォルトオブジェクトを初期化することができます。詳しくはhereを参照してください。ここにあなたの配列を格納し、開いたときにアプリからアクセスすることができます。

本当にあなたがしようとしていることによりますが、私が得る印象から、最初の選択肢が最良の答えかもしれないと感じます。私はコードを提供しておらず、どうやって進めるのかの概要を説明していますが、うまくいけば、あなたを良いスタートにしてくれるはずです。

+0

おかげであなたの答えのために、私は最初のオプションは、私を動作するとは思わないdetialの手順を見つけることができますおそらく質問を更新する)。 – kye

+0

でも、共有されているユーザのデフォルトを見ていきます。何をしていても、あなたの配列を何らかの形でNSDataに変換したいと思うでしょう( 'NSCoding'をしたいかもしれません)。オブジェクト配列にどれだけの量があるかによって、このNSDataをURLに渡すことができる文字列に変換することはオプションであっても構いません。 –

0

データの共有は、「App Groups」という新しいコンセプトによって実現されます。アプリケーショングループはファイルを含むいくつかのデータを共有することができますが、並行書き込みなどを避けるためにファイルアクセスをマーシャリングする必要があることは注目に値します。これはNSFileCoordinationによって実現できますが、CoreDataとNSUserDefaultsはこれをそのままの状態で処理します。

あなたは私がすべき(、渡されるデータは一例strings` `の配列ではありませんhere

関連する問題