我对可可的开发很陌生,所以请多关照。无论如何,我正在尝试通过TouchJSON反序列化从服务器发送的JSON字符串,但是我收到了关于'NSDictionary' may not respond to '+dictionaryWithJSONString:error:'的编译器警告。
我理解这个错误是什么意思,但是我有项目中的所有TouchJSON文件,并且在app_Prefix.pch文件中有一个对NSDictionary_JSONExtensions.h的引用。当我键入命令时,我确实看到它在代码意义上显示,那么为什么它在编译器中失败呢?
下面是它失败的代码,我希望有任何建议:
- (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"];
}
}提前感谢!
更新
#ifdef __OBJC__
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "ASIFormDataRequest.h"
#import "CJSONDeserializer.h"
#import "NSDictionary_JSONExtensions.h"
#endif更新2
这就是在预处理中显示的内容,文件和方法都在那里,所以它应该是工作的吗?
# 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;发布于 2011-01-28 06:57:01
问题是
+ (id)dictionaryWithJSONString:(NSString *)inJSON error:(NSError **)outError;在实现文件(NSDictionary_JSONExtensions.m)中定义,但尚未在头文件(NSDictionary_JSONExtensions.h)中声明:
@interface NSDictionary (NSDictionary_JSONExtensions)
+ (id)dictionaryWithJSONData:(NSData *)inData error:(NSError **)outError;
@end

您可以修补头文件并添加所使用的方法的声明:
@interface NSDictionary (NSDictionary_JSONExtensions)
+ (id)dictionaryWithJSONData:(NSData *)inData error:(NSError **)outError;
+ (id)dictionaryWithJSONString:(NSString *)inJSON error:(NSError **)outError;
@end直到开发人员解决这个问题。我刚刚提醒TouchJSON的维护者注意这个问题。
https://stackoverflow.com/questions/4824501
复制相似问题