Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.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
Iphone 保留使用NSUserDefaults保存的数组的值_Iphone_Objective C_Ios5_Xcode4_Nsuserdefaults - Fatal编程技术网

Iphone 保留使用NSUserDefaults保存的数组的值

Iphone 保留使用NSUserDefaults保存的数组的值,iphone,objective-c,ios5,xcode4,nsuserdefaults,Iphone,Objective C,Ios5,Xcode4,Nsuserdefaults,我有两个视图控制器。第一个具有到另一个视图控制器的序列。对于后一个视图控制器,我希望添加来自文本字段的项,然后通过单击按钮将其保存在数组中。然后将使用NSUserDefaults保存此数组 在下面的代码中,我可以成功地在数组中存储项。此数组也使用NSUserDefaults保存。然而,当我回到第一个视图控制器,然后再次转到第二个视图控制器在阵列上添加新项目时,我先前存储的项目就消失了。新添加的项目是唯一保存的项目 有人说我必须做一些序列化,这是怎么做到的?如果还有其他方法,请给出建议:) 在我的

我有两个视图控制器。第一个具有到另一个视图控制器的序列。对于后一个视图控制器,我希望添加来自文本字段的项,然后通过单击按钮将其保存在数组中。然后将使用NSUserDefaults保存此数组

在下面的代码中,我可以成功地在数组中存储项。此数组也使用NSUserDefaults保存。然而,当我回到第一个视图控制器,然后再次转到第二个视图控制器在阵列上添加新项目时,我先前存储的项目就消失了。新添加的项目是唯一保存的项目

有人说我必须做一些序列化,这是怎么做到的?如果还有其他方法,请给出建议:)

在我的.h文件中

@interface AddCardViewController : UIViewController <UITextFieldDelegate>

@property (strong, nonatomic) IBOutlet UITextField *cardNameTextField;

@end

因此,在appdelegate中使用mutablearray,在appdidfinishlaunching中使用alloc init。因此,如果你从其他视图中添加了一些内容,它将不会替换你的数据


也许这会对你有所帮助。

在我看来,假设的错误如下:

NSMutableArray * = cardName _nameOfCards;
这里_nameOfCards被初始化,然后设置为0个元素,然后使用cardName创建一个引用,该引用最初具有什么storato磁盘的值,因此现在cardName不再具有旧内容,而只有新内容。从这里你错了

您应该为cardName of _nameOfCards创建一个addObject


希望帮助

当您单击addnewcard按钮时,它会将阵列保存在nsuserdefaults中。但当您返回到该viewcontroller时,您的数组将为零。因此,如果您添加了一些内容,那么它将存储到您的数组中,然后将保存在userdefaults中。所以每次您在array和userdefaults中添加新内容时。在addNewCard方法中-将NSUserDefaults中的数据读取到nameOfCards中,然后添加新数据,然后保存可能的重复数据
NSMutableArray * = cardName _nameOfCards;