0

我第一次使用 iCloud。我成功地将数据上传到 iCloud 数据库。

我编写了以下代码来检索数据:

[[iCloud sharedCloud] retrieveCloudDocumentWithName:
          @"SessionInfo.plist" completion:
          ^(UIDocument *cloudDocument, NSData *documentData, NSError *error) {

  NSError *error;
  id dict = [NSJSONSerialization
  JSONObjectWithData:documentData options:NSJSONReadingMutableLeaves error:&error];

这里 dict 为零。错误消息是“ json string did not start with array or object for iCloud”。

4

1 回答 1

0

那不是错误消息,因为那不是NSJSONSerialization可以返回的错误。错误消息很可能类似于The data couldn’t be read because it isn’t in the correct format或如果您希望人们知道您在说什么,那么在提出问题时JSON text did not start with array or object and option to allow fragments not set.包含确切的错误消息很重要。

假设错误与我认为的匹配,答案很简单:您的documentData对象不包含有效的 JSON。结果NSJSONSerialization无法将其转换为字典。该方法的第一个参数必须包含编码到NSData对象中的有效 JSON 数据。

无法确定这是为什么,因为您没有描述您正在使用的数据。但是,由于您使用的是 文件名SessionInfo.plist,因此您可能正在使用属性列表。属性列表不是 JSON。有效的属性列表文件格式包括 XML、二进制(未记录的格式)和 ASCII(已过时但仍然可读)。这些都不是 JSON,也不会与NSJSONSerialization.

于 2014-02-13T17:37:49.760 回答