2015-09-16 11 views
11

Tôi đang sử dụng api lịch google và tôi nhận được hai lỗi.Lỗi Google Api "Nhiều phương thức có tên 'initWithArray:' tìm thấy"

  1. GTMGatherInputStream.m: 25: 13: Nhiều phương pháp có tên là 'initWithArray:' tìm thấy

    #import "GTMGatherInputStream.h" 
    @implementation GTMGatherInputStream 
    + (NSInputStream *)streamWithArray:(NSArray *)dataArray { 
        return [[[self alloc] initWithArray:dataArray] autorelease]; //error on this line 
    } 
    
  2. GTMOAuth2Authentication.h: 31: 11: 'GTMSessionFetcher.h' tập tin không tìm thấy

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

Tôi đã nghiên cứu lỗi ở mọi nơi trực tuyến và tôi không tìm thấy gì. Tôi đang chạy GM El capitan với GM Xcode 7.0. Tôi đã thử nhiều cách khác nhau để giải quyết nó và không có gì đã làm việc. Mã của tôi sẽ không biên dịch. Làm thế nào để sửa lỗi này?

+0

Chỉ cần cài đặt bản cập nhật Xcode 7 và tôi gặp vấn đề tương tự. Bạn đã tìm thấy giải pháp chưa? –

+0

Cùng một vấn đề với tôi. Phải sử dụng Xcode 6.4 để thực hiện việc xây dựng (xây dựng cho Mac) – Vitalya

Trả lời

15

Tôi cho rằng Google sẽ triển khai bản sửa lỗi cho điều này trong tương lai gần; trong khi chờ đợi, chúng ta có thể làm một vài hacks để có được xung quanh những vấn đề:

  1. thay đổi return [[[self alloc] initWithArray:dataArray] autorelease];

    để

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

  2. thay đổi

    #ifndef GTM_USE_SESSION_FETCHER 
    #define GTM_USE_SESSION_FETCHER 1 
    #endif 
    

    để

    #ifndef GTM_USE_SESSION_FETCHER 
    #define GTM_USE_SESSION_FETCHER 0 
    #endif 
    

tôi phải làm điều này trong hai nơi GTM_USE_SESSION_FETCHER được xác định.

Điều cuối cùng, là chuyển đến cài đặt xây dựng dự án GTL và đặt cảnh báo Apple LLVM 7.0 Deprecated Functions thành NO. Với 3 bước này, API lịch sẽ biên dịch thành công trên iOS9.

+0

Tôi đã thực hiện tất cả các bước đó và tôi gặp phải lỗi mới này: "google-api-objectivec-client/Nguồn/HTTPFetcher/GTMHTTPFetcherLogging.m: 793: 59: 'stringByAddingPercentEscapesUsingEncoding:' không được dùng nữa: lần đầu tiên không được sử dụng trong iOS 9.0 - Sử dụng -stringByAddingPercentEncodingWithAllowedCharacters: mã hóa UTF-8 và mã hóa cho thành phần hoặc thành phần URL cụ thể vì mỗi thành phần URL hoặc tiểu hợp phần có các quy tắc khác nhau cho ký tự hợp lệ."Tôi đã nhìn vào lỗi và không có gì Bất kỳ sự giúp đỡ – Sam

+0

Thay đổi phù hợp với stringByAddingPercentEscapesUsingEncoding tới: 'NSString * escapedResponseFile = [responseDataFileName stringByAddingPercentEncodingWithAllowedCharacters: [NSCharacterSet URLQueryAllowedCharacterSet]];.?' –

+0

Bạn đã đi đến các thiết lập dự án xây dựng GTL, và thiết lập cảnh báo Apple LLVM 7.0 Các chức năng không được chấp nhận cho NO? Bước đó đã khắc phục các cảnh báo không dùng nữa cho tôi – Peter

0

Tôi cũng phải xử lý lỗi Comparison of address of ... not equal to null pointer is always true

Điều này đã khiến ứng dụng không được tạo. Đã phải sửa đổi dòng 340 và 1088 của GTMOAuth2ViewControllerTouch.m

Ví dụ:

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

Thay đổi tự trong [[[self alloc] initWithArray:dataArray] autorelease]-GTMGatherInputStream. Nó hoạt động với tôi:

#import "GTMGatherInputStream.h" 
@implementation GTMGatherInputStream 
+ (NSInputStream *)streamWithArray:(NSArray *)dataArray { 
    return [[[GTMGatherInputStream alloc] initWithArray:dataArray] autorelease]; 
} 
Các vấn đề liên quan