3

此代码来自 Phonegap 代码:IAP 插件。错误发生在“sent js”之后的代码行上。除了最后一个“nil”之外,发送到函数的所有元素都是非零的。我什至将它们注销以确保它们已发送。此代码就在插件之外(https://github.com/usmart/InAppPurchaseManager-EXAMPLE),除了日志记录之外没有被修改。在调试器中,我看到没有一个对象为零,所以我不明白为什么会发生错误。

这是错误:

[__NSArrayI JSONRepresentation]:无法识别的选择器发送到实例 0xdc542d0 2013-02-13 23:26:17.209 GoblinSlots[4519:707] *由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[__NSArrayI JSONRepresentation]:发送了无法识别的选择器到实例 0xdc542d0'

这是代码:

      - (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:   (SKProductsResponse *)response
      {
        NSLog(@"got iap product response");
        for (SKProduct *product in response.products) {
            NSLog(@"sending js for %@", product.productIdentifier);
            NSLog(@"  title %@", product.localizedTitle );
            NSLog(@"  desc%@ - %@", product.localizedDescription, product.localizedPrice );


NSArray *callbackArgs = [NSArray arrayWithObjects:
                                 NILABLE(product.productIdentifier),
                                 NILABLE(product.localizedTitle),
                                 NILABLE(product.localizedDescription),
                                 NILABLE(product.localizedPrice),
                                 nil ];
        NSLog(@"sent js");

        NSString *js = [NSString stringWithFormat:@"%@.apply(plugins.inAppPurchaseManager, %@)", successCallback, [callbackArgs JSONSerialize]];
        NSLog(@"js: %@", js);
        [command writeJavascript: js];
    }
4

2 回答 2

3

所有进行 JSON 序列化的东西似乎都已包含在 Cordova 插件中。无需下载和安装另一个 JSON 库。(一种)

PhoneGap 似乎正在从 SBJson 切换到 JSONKit。(二)

PhoneGap 还在更改所有 JSON 方法以使用“cdvjk_”前缀。(C)

据我所知,在这些变化期间,有些事情并不顺利。我所做的是编辑文件 Plugins/InAppPurchaseManager.m ,我在其中进行了这些更改:

  • 添加行

#import <Cordova/CDVJSON.h>

  • 换行

return [self respondsToSelector:@selector(cdvjk_JSONString)] ? [self cdvjk_JSONString] : [self cdvjk_JSONRepresentation];

return [self JSONString];

. (将这个或更好的错误修复推回给可爱的 PhoneGap 人的正确方法是什么?)

于 2013-03-02T02:38:25.543 回答
1

JSONRepresentation是一个SBJson添加的类别,因此您必须将其包含SBJson.h在使用它的类中。

于 2013-02-14T08:26:02.867 回答