Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS NSUserDefaults standardUserDefaults_Ios_Objective C_Nsuserdefaults - Fatal编程技术网

iOS NSUserDefaults standardUserDefaults

iOS NSUserDefaults standardUserDefaults,ios,objective-c,nsuserdefaults,Ios,Objective C,Nsuserdefaults,我有一个概念性的问题-在访问NSUserDefaults时,我是否总是必须使用standardUserDefaultsAPI 我在我的应用程序中保存了很多设置/标志/NSCodinginfo,用于各种用途。但是对于其中的一些事情,我觉得打扰standardUserDefaults是不自然的。我想知道是否可以创建一个新的NSUserDefaults实体来管理我要存储的特定类型的信息 举个例子-我正在使用一些后台NSURLSessionDownloadTasks,我想保存downloadTask和启

我有一个概念性的问题-在访问
NSUserDefaults
时,我是否总是必须使用
standardUserDefaults
API

我在我的应用程序中保存了很多设置/标志/
NSCoding
info,用于各种用途。但是对于其中的一些事情,我觉得打扰
standardUserDefaults
是不自然的。我想知道是否可以创建一个新的
NSUserDefaults
实体来管理我要存储的特定类型的信息

举个例子-我正在使用一些后台
NSURLSessionDownloadTask
s,我想保存
downloadTask
和启动下载任务的实际用户之间的一些关系数据。我正在将该数据保存到
NSUserDefaults
。我只是不确定访问
NSUserDefaults
是否是解决这个问题(以及其他问题)的方法


[可能我解释得不对。对不起!]

NSUserDefaults不是您所描述的正确解决方案

NSUserDefaults实际上是为了一个非常狭隘和特殊的目的。它主要是为了与用户交互,让他们设置自己的偏好,并让这些偏好持久化

它不打算用作任何类型的通用存储器


对于你想要的东西,你可以用一本常用的词典等。如果需要从多个位置访问它,请将其保留在应用程序委托上,或者创建一个singleton类。如果您需要在运行期间持久化它,请使用类似SQLite的东西。

您可以做的一件事是使用
[[NSUserDefaults alloc]initWithSuiteName:
创建单独的
NSUserDefaults
存储


只需执行
[[NSUserDefaults alloc]init]
即可获得与
standardUserDefaults

相同的存储空间。据我所知,无需为数据分类的特定目的专门创建新的用户默认文件


NSUserDefaults可以与任何系统文件一样大,并且可以相应地调整数据转储。如果需要新的默认值,请参阅Catfish_Man的答案。另外,这是专门针对处理某组应用程序的情况。

谢谢您的评论。要跨会话保存简单标志,我需要使用SQLite?这太疯狂了。这完全取决于你拥有什么,你最了解情况,你是最好的决定者。好吧,让我们只说手头的问题就是我上面描述的问题。为从服务器请求个人资料照片的每个用户保存用户名。