2015-09-16 9 views
11

Sto utilizzando l'API di Google Calendar e sto ricevendo due errori.Errore Google Api "Metodi multipli denominati 'initWithArray:' trovato"

  1. GTMGatherInputStream.m: 25: 13: metodi multipli di nome 'initWithArray:' trovato

    #import "GTMGatherInputStream.h" 
    @implementation GTMGatherInputStream 
    + (NSInputStream *)streamWithArray:(NSArray *)dataArray { 
        return [[[self alloc] initWithArray:dataArray] autorelease]; //error on this line 
    } 
    
  2. GTMOAuth2Authentication.h: 31: 11: file 'GTMSessionFetcher.h' non trovato

    #if GTM_USE_SESSION_FETCHER 
    #import "GTMSessionFetcher.h" //GTMSessionFetcher.h file not found error 
    #else 
    #import "GTMHTTPFetcher.h" 
    #endif // GTM_USE_SESSION_FETCHER 
    

Ho cercato l'errore ovunque online e non ho trovato nulla. Sto eseguendo GM El Capitan con GM Xcode 7.0. Ho provato diversi modi per risolverlo e niente ha funzionato. Il mio codice non verrà compilato. Come posso risolvere questo?

+0

Aggiornamento di Xcode 7 appena installato e sto avendo lo stesso problema. Hai trovato una soluzione? –

+0

Lo stesso problema per me. Devo usare Xcode 6.4 per fare la build. (Build per Mac) – Vitalya

risposta

15

Presumo che Google implementerà una soluzione per questo nel prossimo futuro; Nel frattempo, siamo in grado di fare un paio di hack per aggirare questi problemi:

  1. cambiamento return [[[self alloc] initWithArray:dataArray] autorelease];

    a

    return [[(GTMGatherInputStream*)[self alloc] initWithArray:dataArray] autorelease];

  2. cambiamento

    #ifndef GTM_USE_SESSION_FETCHER 
    #define GTM_USE_SESSION_FETCHER 1 
    #endif 
    

    a

    #ifndef GTM_USE_SESSION_FETCHER 
    #define GTM_USE_SESSION_FETCHER 0 
    #endif 
    

ho dovuto farlo in due luoghi in cui GTM_USE_SESSION_FETCHER è stato definito.

Un'ultima cosa era andare alle impostazioni di generazione del progetto GTL e impostare gli avvisi di Apple LLVM 7.0 Deprecated Functions su NO. Con questi 3 passaggi l'API di Calendar viene compilata correttamente su iOS9.

+0

Ho fatto tutti questi passaggi e ho ricevuto questo nuovo errore: "google-api-objectivec-client/Source/HTTPFetcher/GTMHTTPFetcherLogging.m: 793: 59: 'stringByAddingPercentEscapesUsingEncoding:' è deprecato: prima deprecato in iOS 9.0 - Usa -stringByAddingPercentEncodingWithAllowedCharacters: invece, che utilizza sempre la codifica UTF-8 consigliata e che codifica per un componente URL o un sottocomponente specifico poiché ogni componente o sottocomponente dell'URL ha regole diverse per i caratteri sono validi"Ho esaminato l'errore e non hanno nulla Qualsiasi aiuto – Sam

+0

Modificare la linea con stringByAddingPercentEscapesUsingEncoding a: ' NSString * escapedResponseFile = [stringByAddingPercentEncodingWithAllowedCharacters responseDataFileName: [NSCharacterSet URLQueryAllowedCharacterSet]];.? ' –

+0

sei andato alle impostazioni di generazione del progetto GTL, e impostare gli avvisi di Apple LLVM 7.0 Funzionalità deprecate su NO? Quel passo ha corretto per me gli avvisi di deprecazione. – Peter

0

Ho anche avuto a che fare con un errore Comparison of address of ... not equal to null pointer is always true

Questo stava causando l'applicazione non costruire. Ha dovuto modificare le linee 340 e 1088 di GTMOAuth2ViewControllerTouch.m

esempio

// CGP; 9/30/15; took out "&" before kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly 
    //if (accessibility == NULL 
    // && &kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly != NULL) { 
    if (accessibility == NULL 
     && kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly != NULL) { 
    accessibility = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly; 
    } 
0

Variazione sé in [[[self alloc] initWithArray:dataArray] autorelease]-GTMGatherInputStream. Funziona per me:

#import "GTMGatherInputStream.h" 
@implementation GTMGatherInputStream 
+ (NSInputStream *)streamWithArray:(NSArray *)dataArray { 
    return [[[GTMGatherInputStream alloc] initWithArray:dataArray] autorelease]; 
} 
Problemi correlati