2012-03-05 6 views
0

私は自分のアプリケーションにサンプルコードをダウンロードしてevernoteを統合しました。そうでなければうまくいきます。それは、ユーザ名とパスワードの静的な値を含むシングルトンクラスを持っていることだけです。このクラスの.hファイルの.mファイルにこのiphone sdkでのシングルトンパターンの問題

extern NSString * const username; 
extern NSString * const password; 
@interface Evernote : NSObject { 
    Evernote *sharedEvernoteManager; 
    } 

のように見えます

NSString * const username = @"username"; 
    NSString * const password = @"password"; 

@implementation Evernote 
    /************************************************************ 
    * 
    * Connecting to the Evernote server using simple 
    * authentication 
    * 
    ************************************************************/ 

    - (void) connect { 

     if (authToken == nil) 
     {  
      // In the case we are not connected we don't have an authToken 
      // Instantiate the Thrift objects 
      NSURL * NSURLuserStoreUri = [[[NSURL alloc] initWithString: userStoreUri] autorelease]; 

      THTTPClient *userStoreHttpClient = [[[THTTPClient alloc] initWithURL: NSURLuserStoreUri] autorelease]; 
      TBinaryProtocol *userStoreProtocol = [[[TBinaryProtocol alloc] initWithTransport:userStoreHttpClient] autorelease]; 
      EDAMUserStoreClient *userStore = [[[EDAMUserStoreClient alloc] initWithProtocol:userStoreProtocol] autorelease]; 


      // Check that we can talk to the server 
      bool versionOk = [userStore checkVersion: applicationName :[EDAMUserStoreConstants EDAM_VERSION_MAJOR] : [EDAMUserStoreConstants EDAM_VERSION_MINOR]]; 

      if (!versionOk) { 
       // Alerting the user that the note was created 
       UIAlertView *alertDone = [[UIAlertView alloc] initWithTitle: @"Evernote" message: @"Incompatible EDAM client protocol version" delegate: self cancelButtonTitle: @"Ok" otherButtonTitles: nil]; 

       [alertDone show]; 
       [alertDone release]; 

       return; 
      } 


      // Returned result from the Evernote servers after authentication 
      EDAMAuthenticationResult* authResult =[userStore authenticate:username :password : consumerKey :consumerSecret]; 

      // User object describing the account 
      self.user = [authResult user]; 
      // We are going to save the authentication token 
      self.authToken = [authResult authenticationToken]; 
      // and the shard id 
      self.shardId = [user shardId]; 

      // Creating the user's noteStore's URL 
      noteStoreUri = [[[NSURL alloc] initWithString:[NSString stringWithFormat:@"%@%@", noteStoreUriBase, shardId] ] autorelease]; 

      // Creating the User-Agent 
      UIDevice *device = [UIDevice currentDevice]; 
      NSString * userAgent = [NSString stringWithFormat:@"%@/%@;%@(%@)/%@", applicationName,applicationVersion, [device systemName], [device model], [device systemVersion]]; 


      // Initializing the NoteStore client 
      THTTPClient *noteStoreHttpClient = [[[THTTPClient alloc] initWithURL:noteStoreUri userAgent: userAgent timeout:15000] autorelease]; 
      TBinaryProtocol *noteStoreProtocol = [[[TBinaryProtocol alloc] initWithTransport:noteStoreHttpClient] autorelease]; 
      noteStore = [[[EDAMNoteStoreClient alloc] initWithProtocol:noteStoreProtocol] retain]; 

     } 
    } 

私は

を次のように私はテキストフィールドの値を使用できるように、ユーザー名とパスワードダイナミックを行う必要があり
NSString * const username = usernametextfiled.text; 
    NSString * const password = passwrdfiled.text; 

@implementationの前にテキストフィールドを追加できないというエラーが表示されます。この問題を解決するには?

+1

で変数を解放することを忘れないでください

[[Evernote sharedEvernoteManager]setusername:yourvariable]; [[Evernote sharedEvernoteManager]setpassword:yourvariable]; 

を使用して設定...、それらを設定することができますEvernote sharedEvernoteManagerを使用して利益を得る? – Shubhank

+0

@ Shubhank私はあなたに説明してください。 – stackiphone

答えて

2
@interface Evernote : NSObject 
... 


@property(retain) NSString * username; 

@property(retain) NSString * password; 

その後、

@implementation Evernote 


@synthesize username; 
@synthesize password; 

は、あなたはそれら@property作るdealloc

+0

haii、私は[[Evernote sharedEvernoteManager] setusername:yourvariable]というコードをどこに置いたのですか? [[Evernote sharedEvernoteManager] setpassword:yourvariable];ありがとう – stackiphone

+0

あなたはあなたが望むユーザー名をどこにでも持っているので...ここで1つのビューにテキストフィールドを置くと、ユーザーはevernote名を入力します。 – Shubhank