0

次のコード セグメントを試してみたところ、エラーが発生しました :-

#import "JSONKit.h"
#import "Base64.h"
#import <Foundation/Foundation.h>

int main() { 
NSMutableDictionary *dict = [NSMutableDictionary dictionary]; [dict setObject:(id)@"value" forKey:(id)@"key"];

for(id key in dict) NSLog(@"%@\t%@\n", key, [dict objectForKey:key]);

[Base64 initialize]; 
NSData *jsonstr = [dict JSONStringWithOptions:JKSerializeOptionNone error:nil]; 
NSString *val = [Base64 encode: jsonstr]; 
NSLog(@"%@\n", val);

return 0; 
}

私が得たエラーは:-

test.m: In function ‘main’:
test.m:13: warning: incompatible Objective-C types initializing ‘struct NSString *’, expected ‘struct NSData *’
Undefined symbols:
  "_OBJC_CLASS_$_Base64", referenced from:
      __objc_classrefs__DATA@0 in cc23xlpr.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

警告を削除するために、行を次のように変更しました:-

NSData *jsonstr = (NSData *)[dict JSONStringWithOptions:JKSerializeOptionNone error:nil];

しかし、エラーは残っています - Objective-C に慣れていないので、エラーは非常にわかりにくいと思います。誰かが問題の原因/解決策を理解するのを手伝ってくれませんか

4

1 に答える 1

1

その[dict JSONStringWithOptions:JKSerializeOptionNone error:nil]メソッドは文字列を返すと思います。その文字列を NSData にシリアル化したい場合は、次のようにする必要があります。

[Base64 initialize]; 
NSString *jsonStr = [dict JSONStringWithOptions:JKSerializeOptionNone error:nil]; 
NSData *jsonstrData = [jsonStr dataUsingEncoding:NSUTF8StringEncoding];
NSString *val = [Base64 encode: jsonstrData]; 
NSLog(@"%@\n", val);
于 2012-08-16T14:54:42.917 に答える