-1

ここで質問するのは初めてですが、ここでいくつかの問題を検索しています。ご協力いただきありがとうございます。現在、sqlite を使用してアプリを開発しています。AddViewController.m でこのコード行を使用すると、次のようになります。

#import <UIKit/UIKit.h>
#import "ViewController.h"
#import "AppDelegate.h"
#import "Tutorial.h"

.
.
.
if(sqlite3_open([databasePath NSUTF8StringEncoding], &database) == SQLITE_OK)
.
.
.

プログラムは次のように述べています:未宣言の識別子「databasePath:」の使用 いくつかの方法を試しましたが、「databasePath」が宣言されていないか、@interface ではないというだけです。ただし、「データベース」は AppDelegate.h で同じ方法で宣言されており、同じエラーは発生しません。

宣言されている場所は次のとおりです。 AppDelegate.h

@interface AppDelegate : UIResponder <UIApplicationDelegate>
{
    NSString *databaseName;
    NSString *databasePath;
}
@property (nonatomic, retain) NSString *databaseName;
@property (nonatomic, retain) NSString *databasePath;

私はそれを解決するためにたくさん検索してきましたが、「databasePath」を宣言する方法が見つかりませんでした

あなたが私を助けてくれることを願っています。ありがとう

4

1 に答える 1

1

問題は、それdatabasePathが のインスタンス変数でAppDelegateあり、 のインスタンス変数ではないことですAddViewController

sqlite3_open ステートメントの前に次の行を挿入します。

AppDelegate* appDelegate = (AppDelegate*)[UIApplication sharedApplication].delegate;
NSString* databasePath = [appDelegate databasePath];

また、SQLite の Objective-C ラッパーであるFMDBを使用することをお勧めします。

于 2013-03-02T12:52:51.837 に答える