2012-09-07 32 views
0

我正在使用PhoneGap將聯繫人保存在iPhone/Android上。總的來說,它似乎工作,但我追溯了最近崩潰的事實,當我嘗試將一個物理地址設置爲我的contact()對象中的contactAddress()對象時,它會拋出未捕獲的異常。PhoneGap:設置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

我認爲你必須設置聯繫人的'rawId'字段。在使用Phonegap 2.1和Sencha Touch 2.0時,我也遇到了在Android設備上保存聯繫人的問題,並且我得到了類似的日誌輸出,「無效參數:int爲'null'」或其他內容。當我意識到必須設置聯繫人的rawId時,問題就解決了。

就我而言,我只是想更新一個已經存在的聯繫人,所以我將我的聯繫人對象contactToSave的id設置爲與我想更新的聯繫人相同的id。但是當contactToSave.save()執行時,出現了前面提到的錯誤。

當我將contactToSave的id和rawId設置爲與電話簿中的聯繫人相同時,問題就消失了,我可以毫無問題地更新聯繫人。

嘗試設置您的聯繫人的rawId,但我不知道該值是什麼,因爲它是一個新聯繫人。