cloudsight cloudSightQuery 参数设置为空
cloudsight cloudSightQuery parameters set to null
为了好玩,我正在尝试将 CloudSight API 实施到 iOS Objective C 项目中,但是由于某些原因,当我尝试将图像发送到 cloudSight 时,cloudSightQuery 参数是全部设置为空。
我已经将 CloudSight 作为 Cocoapod 添加到我的应用程序中,并且一切正常加载,当我在下面执行这段代码时,它从来没有 returns 来自服务器的任何类型的响应,事实上我什至不确定它发送。
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
这是图书馆:https://libraries.io/github/cloudsight/cloudsight-objc
我们刚刚更新了库以使其更清晰。您可以 运行 a pod update CloudSight
获取新版本。
此类问题的最典型原因是从未调用委托。通常,这意味着委托对象在被回调之前被释放,但是在这种情况下,它在分配时看起来像是 nil。
这里是这一行:
cloudSightQuery.queryDelegate = self;
[self searchWithImage];
应改为:
[self searchWithImage];
然后在方法实现中将初始化和开始更改为:
// Start CloudSight
cloudSightQuery = [[CloudSightQuery alloc] initWithImage:imageData
atLocation:CGPointZero
withDelegate:self
atPlacemark:nil
withDeviceId:@""];
cloudSightQuery.queryDelegate = self;
[cloudSightQuery start];
如果有帮助,请告诉我们!
为了好玩,我正在尝试将 CloudSight API 实施到 iOS Objective C 项目中,但是由于某些原因,当我尝试将图像发送到 cloudSight 时,cloudSightQuery 参数是全部设置为空。
我已经将 CloudSight 作为 Cocoapod 添加到我的应用程序中,并且一切正常加载,当我在下面执行这段代码时,它从来没有 returns 来自服务器的任何类型的响应,事实上我什至不确定它发送。
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
这是图书馆:https://libraries.io/github/cloudsight/cloudsight-objc
我们刚刚更新了库以使其更清晰。您可以 运行 a pod update CloudSight
获取新版本。
此类问题的最典型原因是从未调用委托。通常,这意味着委托对象在被回调之前被释放,但是在这种情况下,它在分配时看起来像是 nil。
这里是这一行:
cloudSightQuery.queryDelegate = self;
[self searchWithImage];
应改为:
[self searchWithImage];
然后在方法实现中将初始化和开始更改为:
// Start CloudSight
cloudSightQuery = [[CloudSightQuery alloc] initWithImage:imageData
atLocation:CGPointZero
withDelegate:self
atPlacemark:nil
withDeviceId:@""];
cloudSightQuery.queryDelegate = self;
[cloudSightQuery start];
如果有帮助,请告诉我们!