2017-03-01 3 views
0

Ich versuche, die CloudSight-API aus Spaß in ein iOS-Objective-C-Projekt zu implementieren. Wenn ich jedoch ein Bild an cloudSight senden möchte, werden alle cloudSightQuery-Parameter auf null gesetzt.cloudsight cloudSightQuery-Parameter auf null gesetzt

Ich habe CloudSight zu meiner Anwendung als Cocoapod hinzugefügt und alles lädt gut und wenn ich diesen Code unter es ausführen, nur keine Antwort vom Server zurück, tatsächlich bin ich nicht einmal sicher, dass es sendet.

firstview.h

#import <UIKit/UIKit.h> 


#import "CloudSight.h" 
#import <CloudSight/CloudSightQueryDelegate.h> 


@interface FirstViewController : UIViewController <CloudSightQueryDelegate> 
{ 
    CloudSightQuery *cloudSightQuery; 
} 

- (void)searchWithImage; 
- (NSData *)imageAsJPEGWithQuality:(float)quality; 

@end 

firstview.m

#import "FirstViewController.h" 
#import <CoreLocation/CoreLocation.h> 
#import "CloudSightConnection.h" 
#import "UIImage+it_Image.h" 
#import <CloudSight/CloudSightQuery.h> 


@interface FirstViewController() 

@end 

@implementation FirstViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    cloudSightQuery.queryDelegate = self; 
    [self searchWithImage]; 
} 

- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

- (void)searchWithImage { 
    UIImage * myImage = [UIImage imageNamed: @"car.jpg"]; 
    NSData *imageData = [self imageAsJPEGWithQuality:0.7 image:myImage]; 




    // Start CloudSight 
    cloudSightQuery = [[CloudSightQuery alloc] initWithImage:imageData 
                atLocation:CGPointZero 
               withDelegate:self 
               atPlacemark:nil 
               withDeviceId:@""]; 

    [cloudSightQuery start]; 
} 

#pragma mark CloudSightQueryDelegate 

- (void)cloudSightQueryDidFinishIdentifying:(CloudSightQuery *)query { 
    if (query.skipReason != nil) { 
     NSLog(@"Skipped: %@", query.skipReason); 
    } else { 
     NSLog(@"Identified: %@", query.title); 
    } 
} 

- (void)cloudSightQueryDidFail:(CloudSightQuery *)query withError:(NSError *)error { 
    NSLog(@"Error: %@", error); 
} 

#pragma mark image 
- (NSData *)imageAsJPEGWithQuality:(float)quality image:(UIImage *)image 
{ 
    return UIImageJPEGRepresentation(image, quality); 
} 



@end 

Hier ist die Bibliothek: https://libraries.io/github/cloudsight/cloudsight-objc

Antwort

1

wir die Bibliothek nur aktualisiert, um dies deutlicher zu machen. Sie können eine pod update CloudSight ausführen, um die neue Version zu erhalten.

Die typischste Ursache für diese Art von Problem ist, dass die Delegierten nie aufgerufen werden. Normalerweise bedeutet dies, dass das Delegate-Objekt vor dem Zurückrufen freigegeben wird. In diesem Fall sieht es jedoch aus, als wäre es null, wenn es zugewiesen wird.

Diese Zeile hier:

cloudSightQuery.queryDelegate = self; 
[self searchWithImage]; 

geändert werden sollte:

[self searchWithImage]; 

Und dann in der Verfahrensführung ändern, um die Initialisierung und beginnen zu:

// Start CloudSight 
cloudSightQuery = [[CloudSightQuery alloc] initWithImage:imageData 
               atLocation:CGPointZero 
              withDelegate:self 
              atPlacemark:nil 
              withDeviceId:@""]; 
cloudSightQuery.queryDelegate = self; 
[cloudSightQuery start]; 

Lassen Sie uns wissen wenn das hilft!

+0

Probleme mit der Aktualisierung dieses Pods. Ich werde es am Morgen noch einmal versuchen und Sie wissen lassen, wie ich gehe, danke für die schnelle Antwort! – HurkNburkS

+0

Das hat sehr gut geklappt! – HurkNburkS

Verwandte Themen