0

PhoneGap を使用して iPhone/Android に連絡先を保存しています。全体的には機能しているように見えますが、contact() オブジェクト内の contactAddress() オブジェクトに物理アドレスを設定しようとすると、キャッチされない例外がスローされるという最近のクラッシュを追跡しました。

保存しようとしている連絡先で JSON.stringify を実行しました。

{
    "id": 41,
    "rawId": null,
    "displayName": "Joe Customer",
    "name": {
        "givenName": "Joe",
        "familyName": "Customer"
    },
    "nickname": null,
    "phoneNumbers": [
        {
            "name": "work",
            "value": "2145556666",
            "pref": true
        },
        {
            "name": "fax",
            "value": "2147778888",
            "pref": true
        }
    ],
    "addresses": [
        {
            "streetAddress": null,
            "locality": "Dallas",
            "region": null,
            "postalCode": null,
            "country": null
        }
    ],
    "ims": null,
    "organizations": [
        {
            "pref": true,
            "type": "work",
            "name": "Acme Inc.",
            "department": null,
            "title": "Sales Person"
        }
    ],
    "birthday": null,
    "note": null,
    "photos": null,
    "categories": null,
    "urls": [
        {
            "name": "website",
            "value": "http://www.google.com",
            "pref": true
        }
    ]
}

これを保存しようとすると、例外が発生します。

2012-09-06 21:50:38.358 MyApp[6224:707] typeValue: (null)

2012-09-06 21:50:38.359 MyApp[6224:707] *** WebKit discarded an uncaught exception in the webView:decidePolicyForNavigationAction:request:frame:decisionListener: delegate: <NSInvalidArgumentException> -[__NSCFDictionary setObject:forKey:]: attempt to insert nil value (key: type)

アドレス オブジェクト全体に入力するか、1 つのフィールドだけに入力するかに関係なく発生するようです。

4

1 に答える 1

1

連絡先の「rawId」フィールドを設定する必要があると思います。Phonegap 2.1 と Sencha Touch 2.0 を使用しているときに、Android デバイスで連絡先を保存する際にも問題があり、同様のログ出力が得られました。連絡先のrawIdを設定する必要があることに気付いたとき、問題は解決しました。

私の場合、既存の連絡先を更新したかったので、連絡先オブジェクト contactToSave の ID を、更新したい連絡先と同じ ID に設定しました。しかし、 contactToSave.save() を実行すると、前述のエラーが発生しました。

idだけでなく、contactToSaveのrawIdも電話帳の連絡先と同じに設定したところ問題がなくなり、問題なく連絡先を更新できました。

連絡先の rawId を設定してみてください。ただし、それは新しい連絡先であるため、どのような値になるかはわかりません。

于 2012-12-07T09:01:50.057 に答える