1

我想我对标题不够清楚,所以在这里:

我正在构建一个具有 facebook 登录的应用程序,但我使用 Facebook API 中的 SBJSON 解析器来解析其他文档。现在我遇到的问题对我来说很奇怪。解析器没有得到我在它读取的 JSON 中所做的更新。

我使用这个内容:

{
    "categories": [
        {
            "id": 5,
            "catunique": "f874f7d2b48b099400e9f22ea512c234c4f89d81",
            "cattitle": "Nature",
            "catfold": "nature"
        },
        {
            "id": 3,
            "catunique": "edfbb81a83e37b045bfddec1c4fbbbef52b408e7",
            "cattitle": "Bikes",
            "catfold": "bikes"
        }
    ],
    "images": [
        {
            "id": 31,
            "catunique": 5,
            "imgtag": "Pig",
            "imgname": "pig759.png",
            "imgbname": "pig759@2x.png"
        },
        {
            "id": 32,
            "catunique": 5,
            "imgtag": "Frog Shadow",
            "imgname": "frogshadow503.jpg",
            "imgbname": "frogshadow503@2x.jpg"
        },
        {
            "id": 33,
            "catunique": 3,
            "imgtag": "Cat",
            "imgname": "cat518.jpg",
            "imgbname": "cat518@2x.jpg"
        }
    ]
}

这可以解析,但是如果我在“图像”对象中添加另一个项目,我会重新运行应用程序并且响应没有得到它。

在我的 App Delegate 中,我有使用解析器的代码

SBJSON *json = [[SBJSON alloc] init];

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://somedomain.com/images.json"]];
//[request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];
//[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyNever];

NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
//set data to string with encoding
NSString *json_string = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];
imagesJsonData = [json objectWithString:json_string error:nil];

谁能告诉我这是服务器问题、解析器问题还是我的编码问题

4

1 回答 1

2

首先:您使用的是非常古老的 SBJson 版本。我建议您使用更新的版本。第二:您确定您的服务器实际上正在发送新的数据文件吗?尝试在 Safari / Firefox / Chrome 中查看它。如果有额外的数据,请检查 NSURLConnection 是否以某种方式缓存了您的请求。?r=1234123(也许在 URI 上附加一个随机数?)

于 2012-07-26T22:05:22.127 回答