首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSUserDefaults问题

NSUserDefaults问题
EN

Stack Overflow用户
提问于 2011-09-07 19:40:11
回答 3查看 121关注 0票数 0

我有两个views.In,一个视图,当我点击自定义按钮时,它进入第二个视图,因为我有文本视图,数据必须存储在临时内存中,所以我使用了以下代码:

代码语言:javascript
复制
NSString *myString=txtvNote.text;
[txtvNote setText:@""];

NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];

if (standardUserDefaults) {
    [standardUserDefaults setObject:myString forKey:@"note"];
    [standardUserDefaults synchronize];
}

当我单击add按钮回到第一个视图时,它将保存到数据库中,我使用了以下代码:

代码语言:javascript
复制
NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
NSString *val = nil;

if (standardUserDefaults) 
    val = [standardUserDefaults objectForKey:@"note"];
NSLog(@"Note::%@",val);

然后在insert查询中传递此值。现在我的问题是,当我将该值保留为空时,它将采用之前插入的值。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-09-07 19:50:09

myString是指向txtvNote中的文本的指针。因此,如果将文本设置为@"“,则myString也将为空。要在赋值时保留txtvNote的值,请使用copy或在保存后重置文本:

代码语言:javascript
复制
 NSString *myString=[[txtvNote.text copy] autorelease]; 
 [txtvNote setText:@""];
 ....
票数 1
EN

Stack Overflow用户

发布于 2011-09-07 19:48:37

序列必须是这样的

//首先将text设置为

代码语言:javascript
复制
 [txtvNote setText:@""];

//然后使用该文本

代码语言:javascript
复制
 NSString *myString=txtvNote.text;
票数 2
EN

Stack Overflow用户

发布于 2011-09-07 19:51:10

这就是NSUserDefaults的工作方式--每个值都存储在你的应用程序的首选项中,就像Obj-C中的任何其他集合一样,它不接受nil值。使用NSNull类的实例或空字符串。或者更好-使用中间控制器来存储值,并在第一个视图中使用键值观察。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7333234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档