【问题标题】:how to display the fetched data from sqlite onto tableview in iOS如何在 iOS 中将从 sqlite 获取的数据显示到 tableview 上
【发布时间】:2016-09-12 03:27:48
【问题描述】:

我有一个 json 数据保存在我的 sqlite 数据库中。我从数据库中获取了一个数组(moodsDataArray)中的数据,看起来像这样-

{     

data = "(\n       
{\n        c1 = 8847FF;\n        c2 =    EA8CFF;\n        c3 = D1FFB0;\n        c4 = FF63FC;\n        c5 = 6B6B6B;\n        description = mood;\n        \"font_color\" = 000000;\n        \"font_name\" = Default;\n        \"font_size\" = 3;\n        \"moods_name\" = mood1;\n    },\n        
{\n        c1 = D4FF38;\n        c2 = FFA83D;\n        c3 = FFFA9E;\n        c4 = 66FFBA;\n        c5 = 63FFE8;\n        description = \"this is mood 2\";\n        \"font_color\" = 363636;\n        \"font_name\" = Default;\n        \"font_size\" = 10;\n        \"moods_name\" = mood2;\n    },\n      
{\n        c1 = 52FFA5;\n        c2 = B8F2FF;\n        c3 = FF6EA5;\n        c4 = DFC4FF;\n        c5 = 61FFED;\n        description = \"it is mood 3\";\n        \"font_color\" = 595959;\n        \"font_name\" = Default;\n        \"font_size\" = 4;\n        \"moods_name\" = mood3;\n    },\n       
{\n        c1 = 8791FF;\n        c2 = D8FF63;\n        c3 = 3DFFDB;\n        c4 = C0FF5C;\n        c5 = FF9EE7;\n        description = \"this is mood 4\";\n        \"font_color\" = 242424;\n        \"font_name\" = Serif;\n        \"font_size\" = 4;\n        \"moods_name\" = mood4;\n    },\n    
{\n        c1 = 8AFFFD;\n        c2 = B3FFC3;\n        c3 = DB70FF;\n        c4 = AEFF9C;\n        c5 = 70FDFF;\n        description = \"this is mood 5\";\n        \"font_color\" = 2134FF;\n        \"font_name\" = Monospace;\n        \"font_size\" = 4;\n        \"moods_name\" = mood5;\n    },\n        
{\n        c1 = 6BFF69;\n        c2 = FF575F;\n        c3 = 78FDFF;\n        c4 = 61FF36;\n        c5 = 6D1FFF;\n        description = \"6th mood\";\n        \"font_color\" = 212121;\n        \"font_name\" = Serif;\n        \"font_size\" = 11;\n        \"moods_name\" = mood6;\n    },\n    
{\n        c1 = FFA72B;\n        c2 = FFD8A1;\n        c3 = FFE38F;\n        c4 = FAFFC7;\n        c5 = FFFBC9;\n        description = \"it is mood 9\";\n        \"font_color\" = C66BFF;\n        \"font_name\" = Sans;\n        \"font_size\" = 11;\n        \"moods_name\" = mood9;\n    }\n)";
    message = "moods Details!";
    status = 1;
}

现在我创建了一个表格视图,我必须在其中将标题名称设置为“moods_name”,这是上述数组中的一个键。我在 cellForRowAtIndexPath 中尝试了以下方法,但它对我不起作用。

cell.lblmoodstitle.text=[[_moodsDataArray objectAtIndex:indexPath.row]valueForKey:@"moods_name"];

请帮助我在这里做错了什么?

【问题讨论】:

  • 为什么要将 JSON 保存到关系数据库中?为什么不创建一个表示 JSON 内容的模式,而不是将其存储为一个整体?
  • @trojanfoe - 由于我是 iOS 新手,我不知道如何表示 json 模式。我会了解并尽快回复您。
  • @trojanfoe 你能告诉我如何使用上述方法解决它吗?
  • 这个问题与 iOS 或 Objective-C 无关。我遇到的问题是您将结构化数据值 (JSON) 打包到数据库的单个列中,而您没有利用关系数据库的强大功能。

标签: ios arrays json sqlite uitableview


【解决方案1】:

以上发布的结果为字典格式。有 3 个键:数据、消息和状态。并且这些键中的每一个的值都以字符串形式返回。因此您不能将其作为数组访问。

更新: 对于每个数组元素,您需要包含来自"{" to "}" 的子字符串的字典。所以首先替换所有"\n" by ""(empty space)". 之后replace "\" with ""。现在由于"{" to "}" 中的每个字符串内容都由"," (comma) 分隔,因此使用分隔符","(comma) 拆分字符串。现在您将获得包含来自"{" to "}" including both "{" and "}" 的内容的字符串数组。现在你可以用分隔符" " (single space) 拆分它,这样你就可以得到包含从"c1 = 8847FF""moods_nam" = mood1 的每个元素的数组

但是说真的,将来使用这种方法会变得很乏味。考虑使用其他存储选项,例如 Core Data 或将其以更易于管理的格式存储在 sqlite 中。

【讨论】:

  • 那么我应该怎么做才能将'data'键中的值转换为数组?或字符串。请帮帮我
  • 虽然您使用的模型相当复杂,但我会更新我的答案,让您大致了解一下
猜你喜欢
  • 1970-01-01
  • 2018-11-12
  • 1970-01-01
  • 2020-04-21
  • 1970-01-01
  • 2017-02-09
  • 1970-01-01
  • 2017-11-13
  • 1970-01-01
相关资源
最近更新 更多