2015-09-16 13 views
11

Używam api Google Calendar i otrzymuję dwa błędy.Błąd Google Api "Wiele metod o nazwie" initWithArray: "znaleziono"

  1. GTMGatherInputStream.m: 25: 13: Wiele metod nazwie 'initWithArray:' Znaleziono

    #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' Nie znaleziono

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

Mam zbadany błąd wszędzie online i nic nie znalazłem. Używam GM Capitan z GM Xcode 7.0. Próbowałem rozwiązać wiele różnych sposobów i nic nie zadziałało. Mój kod się nie skompiluje. Jak to naprawić?

+0

Właśnie zainstalowałem aktualizację Xcode 7 i mam ten sam problem. Znalazłeś rozwiązanie? –

+0

To samo dotyczy mnie. Do wykonania kompilacji musisz użyć Xcode 6.4. (Build for Mac) – Vitalya

Odpowiedz

15

Zakładam, że Google zamierza wprowadzić w tym celu poprawkę w najbliższej przyszłości; W międzyczasie możemy zrobić kilka sztuczek, aby ominąć te kwestie:

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

    do

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

  2. zmiana

    #ifndef GTM_USE_SESSION_FETCHER 
    #define GTM_USE_SESSION_FETCHER 1 
    #endif 
    

    do

    #ifndef GTM_USE_SESSION_FETCHER 
    #define GTM_USE_SESSION_FETCHER 0 
    #endif 
    

Musiałem to zrobić w dwóch miejscach, gdzie GTM_USE_SESSION_FETCHER została zdefiniowana.

Ostatnią rzeczą było przejście do ustawień budowania projektu GTL i ustawienie ostrzeżeń Apple LLVM 7.0: Deprecated Functions na NIE. W tych 3 krokach interfejs API Kalendarza jest pomyślnie kompilowany na iOS9.

+0

Zrobiłem wszystkie te kroki i otrzymałem ten nowy błąd: "google-api-objectivec-client/Source/HTTPFetcher/GTMHTTPFetcherLogging.m: 793: 59: 'stringByAddingPercentEscapesUsingEncoding:' jest nieaktualne: najpierw przestarzałe w iOS 9.0 - zamiast tego używa ciąg -stringByAddingPercentEncodingWithAllowedCharacters: zawsze używa zalecanego kodowania UTF-8 i koduje określony komponent URL lub podskładnik URL, ponieważ każdy komponent lub podskład URL lub komponent ma inne reguły znaki są poprawne."Szukałem w błąd i nie mają nic żadnej pomocy – Sam

+0

Zmień linię z stringByAddingPercentEscapesUsingEncoding do: ' NSString * escapedResponseFile = [stringByAddingPercentEncodingWithAllowedCharacters responseDataFileName: [NSCharacterSet URLQueryAllowedCharacterSet]];.? ' –

+0

poszedłeś do ustawień kompilacji projektu GTL, i ustaw ostrzeżenia Apple LLVM 7.0 Przestarzałe funkcje na NIE Ten krok naprawił ostrzeżenia o wycofaniu dla mnie – Peter

0

miałem również do czynienia z błędem Comparison of address of ... not equal to null pointer is always true

To było przyczyną aplikację, aby nie budować. Musiał zmodyfikować linie 340 i 1088 z GTMOAuth2ViewControllerTouch.m

np

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

Zmień siebie w [[[self alloc] initWithArray:dataArray] autorelease] do GTMGatherInputStream. Działa to dla mnie:

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