2016-04-23 7 views
0

私はウィジェットアプリを開発中です。今日のエクステンションは全く新しいものです。私は、アプリと今日の拡張機能の間でデータを共有したいと思います。私は1つのデータベースを作成しました。私はそのデータベースに4つのテーブルを持っています。私はこのコードがApp Groupsのデータベースを作成するのを見つけました:今日の拡張機能を使ってSQLiteを共有できない

NSString *appGroupId = @"group.appname"; 
    NSURL *appGroupDirectoryPath = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:appGroupId]; 
    dataBaseURL = [appGroupDirectoryPath URLByAppendingPathComponent:@"database.sqlite"]; 
    NSLog(@"dataBaseURL %@", dataBaseURL); 

それは働いた。私のSQLiteファイルが作成されました。しかし、それは私のテーブルを表示しません。それは空のデータベースを示します。私はそれについて何も知らない。助けてください。

+0

新しいデータベースを作成している場合、それは意志を助けます明らかに空です。 – Lion

+0

Ohh ..次に、SQLIteツールで作成したデータベースを使用する方法は?私はすでに4つのテーブルを作成してプロジェクトに追加しました。 @Lion – Monika

答えて

1

新しいデータベースを作成する場合は、明らかに空です。

まず、データベースを目的のテーブルに作成できます。 xcodeの外からデータベースを作成し、yto xcodeをドラッグ・アンド・ドロップする必要はありません。これについてはtechotopia tutorialを参照することができます。

は、今あなたがあなたのデータベースのパスを取得することができますこの方法で

NSString *databasePath = [[NSBundle mainBundle] pathForResource:@"myDbName" ofType:@"sqlite"]; 

、ドラッグして、メインバンドルにデータベースを配置し、あなたがそのようなにアクセスすることができますドロップします。ここpathforresourceはあなたのデータベース名です、私はあなたのケースでdatabaseと考えて、oftypeextentionです、私はあなたのケースではsqliteだと思います。

今あなたが希望は、あなたがURLでそれをしたいならば、あなたは、のようなURLに

NSURL *fileURL = [[NSURL alloc] initFileURLWithPath:filePath]; 

    or 

    NSURL *fileURL = [NSURL fileURLWithPath:filePath]; 

を変換することができ、文字列としてパスを取得、これは:)

+0

ありがとうございます。それは私のアプリで動作します。しかし、私はこの同じデータベースを今日の拡張と共有したいと思っています。どうやってやるの? – Monika

+0

ようこそ。 :)私は今日の拡張機能について多くのアイデアを持っていないので、あなたは確かにいくつかの解決策を見つけることができます。この回答が役に立っていると感じる場合は、それを受け入れて、同様の問題を抱えている他の人がそれを使用できるようにします。 – Lion

+0

最後に私の質問では空のデータベースを作成しています。だから私は同じコードを使用して、その後、私はテーブルを作成して..作成し、私は私の問題を解決..!だからあなたの答えに書いた行は、 "客観的なcのテーブルを使ってデータベースを作ることができます"それを解決するために私を助けた。 :D ..ありがとう;) – Monika

関連する問題