我正在考虑将所有数据存储在 App Groups 的容器区域中以创建支持 AppExtensions 的应用。
在 iOS8 的 App Groups 容器区域存储所有数据有什么弱点吗? 我应该将有限的数据存储在 App Group 的容器区域吗?
最佳答案
当然这取决于您的应用,但这是我的两分钱:
将所有信息存储在一个共享目录中完全是矫枉过正,而且听起来不像是出于任何合理的推理。如果您觉得您的小部件需要应用所需的所有信息,那么您可能需要重新考虑小部件的复杂性。
您通过此实现的是便利( future 您会头疼)而不是简单(通过单一责任隐藏复杂性)。需要注意的是,随着您的应用程序的增长和变得越来越复杂,您最终将花费更多的时间来处理 App Container 内部的信息(la massive view controller)。你要争取的是单一的责任。相反,您现在需要一个对象来促进将两个应用程序的信息整合到一个容器中。
共享容器也不同于 App Sandbox,因为您需要担心协调读取和写入。这就是为什么通常最好继续使用 Core Data 或 NSUserDefaults(用套件名称实例化)。如果您的应用程序存储图像和其他内容,那么您将陷入痛苦的世界。连Apple推荐用户默认值(因为这是他们给出的唯一示例)或 CoreData:
After you enable app groups, an app extension and its containing app can both use the NSUserDefaults API to share access to user preferences [...] To avoid data corruption, you must synchronize data accesses. Use Core Data, SQLite, or Posix locks to help coordinate data access in a shared container.
小部件的目的是提供应用程序的即时概览。通过最大限度地减少小部件可以访问的数据量,您将减少许多麻烦,并使您的小部件更好地包含在内。请记住,能力越大,责任越大,如果您认为将所有信息存储在一个共享容器中,那么您需要承担很多责任...
我最近为一个新闻应用程序构建了一个小部件,该小部件显示头条新闻故事以及对小部件显示的内容进行个性化设置的能力。以下是数据持久性的基本分割,可以让您了解:
小工具
应用
共享容器
当小部件被要求获取内容时,它会下载一个包含所有主题头条新闻的 JSON 文件。此 JSON 持久保存到共享容器。我们存储所有故事的原因是,以防用户更改他们最喜欢的主题,然后小部件可以在存储所有主题时简单地更新其选择。这也允许应用程序更新头条新闻和小部件以立即反射(reflect)这一点。
然后,该小部件将提取 3 个与用户指定的主题标签相匹配的头条新闻。这些热门主题保存在共享的用户默认项中。自然有可能在用户选择主题之前打开小部件,在这种情况下,小部件将自动选择前三个左右的主题。
打个比方——如果一个Widget和一个App是工作场所的同事,Shared Container就像一台电脑。如果您每天都在同一台计算机上与某人一起工作,您的工作效率会有多高?
关于ios - 在 iOS8 上将所有数据存储在 App Groups 的容器区域中是否有任何弱点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28205758/
我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚
我试图获取一个长度在1到10之间的字符串,并输出将字符串分解为大小为1、2或3的连续子字符串的所有可能方式。例如:输入:123456将整数分割成单个字符,然后继续查找组合。该代码将返回以下所有数组。[1,2,3,4,5,6][12,3,4,5,6][1,23,4,5,6][1,2,34,5,6][1,2,3,45,6][1,2,3,4,56][12,34,5,6][12,3,45,6][12,3,4,56][1,23,45,6][1,2,34,56][1,23,4,56][12,34,56][123,4,5,6][1,234,5,6][1,2,345,6][1,2,3,456][123
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
当我的预订模型通过rake任务在状态机上转换时,我试图找出如何跳过对ActiveRecord对象的特定实例的验证。我想在reservation.close时跳过所有验证!叫做。希望调用reservation.close!(:validate=>false)之类的东西。仅供引用,我们正在使用https://github.com/pluginaweek/state_machine用于状态机。这是我的预订模型的示例。classReservation["requested","negotiating","approved"])}state_machine:initial=>'requested
我试图在索引页中创建一个超链接,但它没有显示,也没有给出任何错误。这是我的index.html.erb代码。ListingarticlesTitleTextssss我检查了我的路线,我认为它们也没有问题。PrefixVerbURIPatternController#Actionwelcome_indexGET/welcome/index(.:format)welcome#indexarticlesGET/articles(.:format)articles#indexPOST/articles(.:format)articles#createnew_articleGET/article
我有这个html标记:我想得到这个:我如何使用Nokogiri做到这一点? 最佳答案 require'nokogiri'doc=Nokogiri::HTML('')您可以通过xpath删除所有属性:doc.xpath('//@*').remove或者,如果您需要做一些更复杂的事情,有时使用以下方法遍历所有元素会更容易:doc.traversedo|node|node.keys.eachdo|attribute|node.deleteattributeendend 关于ruby-Nokog
这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下
我正在处理旧代码的一部分。beforedoallow_any_instance_of(SportRateManager).toreceive(:create).and_return(true)endRubocop错误如下:Avoidstubbingusing'allow_any_instance_of'我读到了RuboCop::RSpec:AnyInstance我试着像下面那样改变它。由此beforedoallow_any_instance_of(SportRateManager).toreceive(:create).and_return(true)end对此:let(:sport_
我想获取模块中定义的所有常量的值:moduleLettersA='apple'.freezeB='boy'.freezeendconstants给了我常量的名字:Letters.constants(false)#=>[:A,:B]如何获取它们的值的数组,即["apple","boy"]? 最佳答案 为了做到这一点,请使用mapLetters.constants(false).map&Letters.method(:const_get)这将返回["a","b"]第二种方式:Letters.constants(false).map{|c
我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的