谷歌地方API“参考”键崩溃iPhone应用程序

问题描述:

我对于目标c有点新,并遇到了一个有趣的问题。我使用JSON从谷歌地方api得到的搜索结果,它工作正常。找到该地点后,我想加载显示业务详情的第二个屏幕。我计划通过使用Places API的地点详情搜索来完成此操作。为了在两个视图之间传递信息,我创建了一个数据类来保存变量。谷歌地方API“参考”键崩溃iPhone应用程序

DataClass.h

#import <Foundation/Foundation.h> 

@interface DataClass : NSObject {  

    NSString *Lat; 
    NSString *Long; 
    NSString *barLat; 
    NSString *barLong; 
    NSString *Ref; 
    NSString *barName; 

}  
@property(nonatomic,retain)NSString *Lat; 
@property(nonatomic,retain)NSString *Long; 
@property(nonatomic,retain)NSString *barLat; 
@property(nonatomic,retain)NSString *barLong; 
@property(nonatomic,retain)NSString *Ref; 
@property(nonatomic,retain)NSString *barName; 
+(DataClass*)getInstance; 

@end 

DataClass.m

#import "DataClass.h" 

@implementation DataClass 
@synthesize Lat; 
@synthesize Long; 
@synthesize barLat; 
@synthesize barLong; 
@synthesize Ref; 
@synthesize barName; 
static DataClass *instance =nil;  
+(DataClass *)getInstance  
{  
    @synchronized(self)  
    {  
     if(instance==nil)  
     {  

      instance= [DataClass new];  
     }  
    }  
    return instance;  
} 
@end 

在我的第一个观点我想补充的参考值是这样的:

DataClass *obj=[DataClass getInstance]; 
NSString *barRef = [NSString stringWithFormat:@"%@", searchResult.reference]; 
obj.Ref = barRef; 

的searchResult.reference是有效的,当我把它放入barRef并使用NSLog时,它会正确输出,但是当我尝试将它添加到obj对象时,它会使应用程序崩溃。该字符串看起来像

“CnRrAAAABX_U5FcybhlJgmWGAv19Fhemk_Bu7ytKKuL33201sKfce2aIzeZ2P8cWdKPV8hCsbUbAzYcoA9QDmbMPeYqCX8idypsQH4LXvGwxW_qtW4jBod2bufelyxeLaBlS1DoNfDtaH4evksVluW9gsqCGcRIQkJXwM_RcSewilknJowaghhoUFoR64jZTUDCsrXvmOqg4eqJx5uU”

即使我用

的NSString * barRef = @ “CnRrAAAABX_U5FcybhlJgmWGAv19Fhemk_Bu7ytKKuL33201sKfce2aIzeZ2P8cWdKPV8hCsbUbAzYcoA9QDmbMPeYqCX8idypsQH4LXvGwxW_qtW4jBod2bufelyxeLaBlS1DoNfDtaH4evksVluW9gsqCGcRIQkJXwM_RcSewilknJowaghhoUFoR64jZTUDCsrXvmOqg4eqJx5uU”;

然后obj.Ref = barRef;它崩溃。任何想法为什么会发生这种情况或解决办法?

+0

原来,这不是我的问题。在循环浏览JSON数据以从地点详细信息api返回详细信息时,出现以下错误。我使用相同的代码来拉和解析JSON数据,因为我与之前的api请求一样,但它引发了这个错误“***由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:' - [__ NSCFString objectForKey:] :无法识别的选择发送到实例0x7bbdab0'我使用的代码是barDetail.phone = [dictionary objectForKey:@“formatted_phone_number”];这与我以前使用的JSON数据相同 –

看来,你的字典对象不是字典,而是字符串。

可能的解决方案:

1)检查,如果你有@ “FORMATTED_PHONE_NUMBER” 关键在你的字典里,使用调试器。 调试你的代码,并检查你的字典是否很好。你也可以使用NSLog输出你的字典内容,看看它是否好。

2)如果你的字典不好,检查你是否有这样的东西。这是我解析来自Google API的JSON格式的HTML响应:

NSDictionary *dic; 
SBJsonParser *jsonParser = [SBJsonParser new]; 
NSError *error = NULL; 
NSURLResponse *response; 
NSHTTPURLResponse *httpResponse; 

    //Create a URL object. 
    NSURL *url = [NSURL URLWithString:urlString]; 

    //URL Request Object 
    NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLCacheStorageAllowed timeoutInterval:userWaitTime]; 

    NSData *data = [NSURLConnection sendSynchronousRequest:request 
             returningResponse:&response error:&error]; 

    NSString *htmlString = [[NSString alloc] initWithBytes:[data bytes] 
                length:[data length] encoding: NSUTF8StringEncoding]; 

    //NSLog (@"htmlString: %@", htmlString); 

    dic = [jsonParser objectWithString:htmlString error:nil];