首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >'NSDictionary‘可能不会响应’+字典使用NSDictionary‘。使用TouchJSON时

'NSDictionary‘可能不会响应’+字典使用NSDictionary‘。使用TouchJSON时
EN

Stack Overflow用户
提问于 2011-01-28 03:15:02
回答 1查看 1.1K关注 0票数 0

我对可可的开发很陌生,所以请多关照。无论如何,我正在尝试通过TouchJSON反序列化从服务器发送的JSON字符串,但是我收到了关于'NSDictionary' may not respond to '+dictionaryWithJSONString:error:'的编译器警告。

我理解这个错误是什么意思,但是我有项目中的所有TouchJSON文件,并且在app_Prefix.pch文件中有一个对NSDictionary_JSONExtensions.h的引用。当我键入命令时,我确实看到它在代码意义上显示,那么为什么它在编译器中失败呢?

下面是它失败的代码,我希望有任何建议:

代码语言:javascript
复制
- (IBAction)authorizeUser:(id)sender {
 ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:@"http://192.168.0.5/iOS"]];

 [request setRequestMethod:@"POST"];
 [request setPostValue:credentialsName.text forKey:@"Credentials.Name"];
 [request setPostValue:credentialsPassword.text forKey:@"Credentials.Password"];
 [request setPostValue:credentialsPIN.text forKey:@"Credentials.PIN"];
 [request startSynchronous];

 NSError *requestError = [request error];

 if (!requestError) {
  NSError *jsonError = NULL;
  NSDictionary *responseDictionary = [NSDictionary dictionaryWithJSONString:[request responseString] error:&jsonError]; /* <- ERROR... */

  status.text = [responseDictionary objectForKey:@"Success"];
 }
}

提前感谢!

更新

代码语言:javascript
复制
#ifdef __OBJC__
    #import <Foundation/Foundation.h>
    #import <UIKit/UIKit.h>
    #import "ASIFormDataRequest.h"
    #import "CJSONDeserializer.h"
    #import "NSDictionary_JSONExtensions.h"
#endif

更新2

这就是在预处理中显示的内容,文件和方法都在那里,所以它应该是工作的吗?

代码语言:javascript
复制
# 10 "/Users/Alex/Documents/iPad/Classes/SignInViewController.m" 2
# 1 "/Users/Alex/Documents/iPad/TouchJSON/Extensions/NSDictionary_JSONExtensions.h" 1
# 32 "/Users/Alex/Documents/iPad/TouchJSON/Extensions/NSDictionary_JSONExtensions.h"
@interface NSDictionary (NSDictionary_JSONExtensions)

+ (id)dictionaryWithJSONData:(NSData *)inData error:(NSError **)outError;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-28 06:57:01

问题是

代码语言:javascript
复制
+ (id)dictionaryWithJSONString:(NSString *)inJSON error:(NSError **)outError;

在实现文件(NSDictionary_JSONExtensions.m)中定义,但尚未在头文件(NSDictionary_JSONExtensions.h)中声明:

代码语言:javascript
复制
@interface NSDictionary (NSDictionary_JSONExtensions)
+ (id)dictionaryWithJSONData:(NSData *)inData error:(NSError **)outError;
@end

您可以修补头文件并添加所使用的方法的声明:

代码语言:javascript
复制
@interface NSDictionary (NSDictionary_JSONExtensions)
+ (id)dictionaryWithJSONData:(NSData *)inData error:(NSError **)outError;
+ (id)dictionaryWithJSONString:(NSString *)inJSON error:(NSError **)outError;
@end

直到开发人员解决这个问题。我刚刚提醒TouchJSON的维护者注意这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4824501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档