在NSUserDefaults中存储swiftyJSON存储数据的问题...相同的数据源

时间:2016-10-26 12:59:03

标签: php ios json swift swifty-json

很抱歉很长的帖子......很多数据。 我在将NSS存储到NSUserDefaults时遇到问题。我已经构建了后端PHP服务,它在两个页面上都返回JSON。我不确定为什么一个JSON能够存储而另一个不能存储....

提前致谢

通常这里是返回数据的PHP CODE

header('Content-Type: application/json; charset=utf-8');
echo json_encode($rows,JSON_PRETTY_PRINT);

socialmedia.php退货:

{
    "socialsites": [
        {
            "type": "Government",
            "entries": [
                {
                    "id": "1",
                    "name": "Pete",
                    "address": "https:\/\/website.com",
                    "medium": "WWW",
                    "section": "Government",
                    "zip": "02055",
                    "active": "Y"
                }
            ]
        },
        {
            "type": "School",
            "entries": [
                {
                    "id": "2",
                    "name": "SITE2",
                    "address": "https:\/\/twitter.com\/test",
                    "medium": "TWITTER",
                    "section": "School",
                    "zip": "02055",
                    "active": "Y"
                }
            ]
        },
        {
            "type": "Organizations",
            "entries": [
                {
                    "id": "3",
                    "name": "This Week Inserser",
                    "address": "https:\/\/www.resr.com",
                    "medium": "WWW",
                    "section": "Organizations",
                    "zip": "02055",
                    "active": "Y"
                }
            ]
        }
    ]
}

我可以使用

将其存储到NSUSERDefault
var swiftyJsonVar: JSON = ""

var userdefaults = UserDefaults.standard
func gettheData(){
    if let test = self.userdefaults.object(forKey: "socialtableJSON"){
        print("beginkey")
        print(test)
        print("endkey")
    }
    let whichzip = userdefaults.object(forKey: "workingZip")
    Alamofire.request(openEVTjson,method:.get,parameters: ["zip_code":whichzip!]).validate().responseJSON{

        responseData in
        switch responseData.result{

        case .success(let jJson):
            self.keys.removeAll()
            self.post.removeAll()
            self.swiftyJsonVar = JSON(jJson)

            self.userdefaults.set(jJson, forKey: "socialtableJSON")

这一切都很好......并按预期工作......

eventsJSON2.php退回

{
    "events": [
        {
            "category": "SCHOOLS"
        },
        {
            "category": "RELIGOUS ORGANIZATIONS"
        },
        {
            "category": "NON-RELIGOUS ORGANIZATIONS",
            "events2": [
                {
                    "news_id": "12",
                    "news_id_parent": "12",
                    "series_id": "5",
                    "news_style": "Single-Day",
                    "news_finalized": "0",
                    "news_owner": "2",
                    "news_title": "TEST FOR Change JSON THIS IS A VERY LONG TITLE TO MAKE",
                    "news_contact": "Mr Contact",
                    "news_listdate": "1473944001",
                    "news_start_date": "1477530600",
                    "news_expiration": "1477537200",
                    "news_story": "This is the story text which will be the story text<br \/>This is the story text which will be the story text<br \/>This is the story text which will be the story text<br \/>This is the story text which will be the story text",
                    "news_image1": null,
                    "news_image2": null,
                    "news_ilue": "Y",
                    "news_priority": "N",
                    "news_location": "7 Main Street",
                    "news_location_zip": "02052",
                    "news_time": "",
                    "news_category": "3",
                    "news_admission": "50",
                    "news_needticketing": "N",
                    "news_tickets": "10",
                    "news_tickets_pur": null,
                    "news_tickets_ser": "Y",
                    "news_phone": "555-555-5555",
                    "news_email": "no@no.com",
                    "news_web": "http:\/\/www.cnn.com",
                    "news_sponsor": "Me Sponsor",
                    "news_story_released": "Y",
                    "news_organization": "1",
                    "news_basezip": "02052",
                    "news_surround": "N",
                    "news_attach": null,
                    "news_paid": "NP",
                    "news_weeks": "1",
                    "news_rate": null,
                    "txn_id": null,
                    "news_pay_auth_date": null,
                    "news_pay_date": null,
                    "org_id": "1",
                    "org_name": "New N' Towne",
                    "base_zip": "02052",
                    "description": "Organization for New People",
                    "cat_id": "3"
                }
            ]
        },
        {
            "category": "GOVERNMENT"
        },
        {
            "category": "RETAIL"
        },
        {
            "category": "YARD SALES"
        },
        {
            "category": "OPEN HOUSES"
        }
    ]
}

我会用

来存储它
var swiftyJsonVar: JSON = ""
var userdefaults = UserDefaults.standard

Alamofire.request(openEVTjson,method:.get,parameters: ["zip_code":whichzip]).validate().responseJSON{

        responseData in
        switch responseData.result{

        case .success(let jJson):
            self.swiftyJsonVar = JSON(jJson)
            self.keys.removeAll()
            //let test = self.swiftyJsonVar.rawString()
            //print(test)
            self.userdefaults.set(jJson, forKey: "lastEventsJSON")
            self.userdefaults.set(Date().timeIntervalSince1970, forKey: "lastEventsLoad")

我最终得到了

2016-10-26 08:55:31.813 JSONTesting[79483:4081659] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Attempt to insert non-property list object {
    events =     (
                {
            category = SCHOOLS;
        },
                {
            category = "RELIGOUS ORGANIZATIONS";
        },
                {
            category = "NON-RELIGOUS ORGANIZATIONS";
            events2 =             (
                                {
                    "base_zip" = 02052;
                    "cat_id" = 3;
                    description = "Organization for New People";
                    "news_admission" = 50;
                    "news_attach" = "<null>";
                    "news_basezip" = 02052;
                    "news_category" = 3;
                    "news_contact" = "Mr Contact";
                    "news_email" = "no@no.com";
                    "news_expiration" = 1477537200;
                    "news_finalized" = 0;
                    "news_id" = 12;
                    "news_id_parent" = 12;
                    "news_ilue" = Y;
                    "news_image1" = "<null>";
                    "news_image2" = "<null>";
                    "news_listdate" = 1473944001;
                    "news_location" = "7 Main Street";
                    "news_location_zip" = 02052;
                    "news_needticketing" = N;
                    "news_organization" = 1;
                    "news_owner" = 2;
                    "news_paid" = NP;
                    "news_pay_auth_date" = "<null>";
                    "news_pay_date" = "<null>";
                    "news_phone" = "555-555-5555";
                    "news_priority" = N;
                    "news_rate" = "<null>";
                    "news_sponsor" = "Me Sponsor";
                    "news_start_date" = 1477530600;
                    "news_story" = "This is the story text which will be the story text<br />This is the story text which will be the story text<br />This is the story text which will be the story text<br />This is the story text which will be the story text";
                    "news_story_released" = Y;
                    "news_style" = "Single-Day";
                    "news_surround" = N;
                    "news_tickets" = 10;
                    "news_tickets_pur" = "<null>";
                    "news_tickets_ser" = Y;
                    "news_time" = "";
                    "news_title" = "TEST FOR Change JSON THIS IS A VERY LONG TITLE TO MAKE";
                    "news_web" = "http://www.cnn.com";
                    "news_weeks" = 1;
                    "org_id" = 1;
                    "org_name" = "New N' Towne";
                    "series_id" = 5;
                    "txn_id" = "<null>";
                }
            );
        },
                {
            category = GOVERNMENT;
        },
                {
            category = RETAIL;
        },
                {
            category = "YARD SALES";
        },
                {
            category = "OPEN HOUSES";
        }
    );
} for key lastEventsJSON'

1 个答案:

答案 0 :(得分:1)

您需要通过删除NSNull值或将其替换为默认值来修剪JSON。

相关问题