Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.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/3/templates/2.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 无法将数据写入plist文件_Ios_Objective C_Plist - Fatal编程技术网

Ios 无法将数据写入plist文件

Ios 无法将数据写入plist文件,ios,objective-c,plist,Ios,Objective C,Plist,我在网上查过这个方法,但是没有更新数据 在pickerView:didSelectRow:Incomonent方法中,我测试了cameraCode,在我在pickerView中选择了不同的行后,数组的键已更改,但该值尚未写入名为multiseting.plist的plist文件,即使我编写了以下语句: path = [[NSBundle mainBundle] pathForResource:@"MultiSetting" ofType:@"plist"]; [settingInfo write

我在网上查过这个方法,但是没有更新数据

在pickerView:didSelectRow:Incomonent方法中,我测试了cameraCode,在我在pickerView中选择了不同的行后,数组的键已更改,但该值尚未写入名为multiseting.plist的plist文件,即使我编写了以下语句:

path = [[NSBundle mainBundle] pathForResource:@"MultiSetting" ofType:@"plist"];
[settingInfo writeToFile:path atomically:YES];
有什么可以帮助我提高技能的吗

这是我的代码:

多设置视图控制器.h

#import <UIKit/UIKit.h>

@interface MultiSettingViewController : UIViewController

@property (nonatomic) NSInteger *camNum;

@property (nonatomic, retain) IBOutlet UIPickerView *picker;
@property (strong, nonatomic) IBOutlet UITextField *textField;
@property (nonatomic,retain) IBOutlet UISegmentedControl *segmentedControl;
@property (retain, nonatomic) IBOutlet UILabel *regionLabel;
@property (retain, nonatomic) IBOutlet UILabel *placeLabel;

@property (nonatomic, retain) NSArray *placeArray;
@property (strong, nonatomic) NSMutableArray *settingArray;
@property (strong, nonatomic) UIToolbar *doneToolbar;
@property (strong, nonatomic) NSBundle *bundle;
@property (strong, nonatomic) NSString *path;
@property (strong, nonatomic) NSBundle *bundle1;
@property (strong, nonatomic) NSString *path1;


- (IBAction)segmentedControlIndexChanged;
- (void)doneBtn_OnClick:(id)sender;
- (IBAction)textfield_OnClick:(id)sender;

@end

非常感谢您的真诚帮助

主捆绑包中包含的所有内容都是只读的;因此,您的日志中可能出现Cocoa错误513(“操作无法完成。操作不允许”)

您还有三个用于数据存储的文件夹,它们是读/写文件夹:
Temp
Cache
Documents

您可以在运行时在文档文件夹中创建文件
multiseting.plist
,然后写入其中


您可以按如下方式检索文档目录的路径:

 NSArray * documentPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
 NSString * documentDirectory = [documentPath objectAtIndex:0];

编辑 然后,您可以将pList复制到其中(请注意,如前所述,它是只读的,因此您将无法移动它,也无法从包中删除它)。为此,请使用NSFileManager的功能:


主捆绑包中包含的所有内容都是只读的;因此,您的日志中可能出现Cocoa错误513(“操作无法完成。操作不允许”)

您还有三个用于数据存储的文件夹,它们是读/写文件夹:
Temp
Cache
Documents

您可以在运行时在文档文件夹中创建文件
multiseting.plist
,然后写入其中


您可以按如下方式检索文档目录的路径:

 NSArray * documentPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
 NSString * documentDirectory = [documentPath objectAtIndex:0];

编辑 然后,您可以将pList复制到其中(请注意,如前所述,它是只读的,因此您将无法移动它,也无法从包中删除它)。为此,请使用NSFileManager的功能:


您正试图写入驻留在应用程序包中的文件。这肯定不是写入用户设置的位置。iOS也不允许您使用,因为沙箱会阻止应用程序对应用程序包的写访问


使用适当的API获得一个文件系统位置,您可以在其中进行实际写入

您正试图写入驻留在应用程序包中的文件。这肯定不是写入用户设置的位置。iOS也不允许您使用,因为沙箱会阻止应用程序对应用程序包的写访问



使用适当的API获得一个文件系统位置,您可以在其中进行实际写入

您的意思是我想将multiseting.plist作为NSMutableArray写入文档文件夹吗?如果是,怎么做?因为前面编写的代码只是创建一个路径和目录。谢谢。@user2541401我给出的代码是检索(此处不创建)特定于应用程序的文档目录的路径:使用它在那里创建pList。关于如何以编程方式创建文件(例如,)的文章很多,但实际上,我已经有了一个plist文件。我的问题是如何将plist文件中的数据导入文档文件夹。不是吗?@user2541401我编辑了我的答案。不要忘记在
dstPath
中包含文件名(在文档中指定),否则会失败,正在尝试替换所有文档文件夹。@Bigood:我猜您的意思是
NSFileManager
的方法
copyItemAtPath:toPath:error:
您的意思是我要将multiseting.plist作为NSMutableArray写入文档文件夹吗?如果是,怎么做?因为前面编写的代码只是创建一个路径和目录。谢谢。@user2541401我给出的代码是检索(此处不创建)特定于应用程序的文档目录的路径:使用它在那里创建pList。关于如何以编程方式创建文件(例如,)的文章很多,但实际上,我已经有了一个plist文件。我的问题是如何将plist文件中的数据导入文档文件夹。不是吗?@user2541401我编辑了我的答案。别忘了在
dstPath
中包含文件名(它在文档中指定),否则它将失败,试图替换所有文档文件夹。@Bigood:我猜你的意思是
NSFileManager
的方法
copyItemAtPath:toPath:error:
实际上不是重复,因为仅获取绝对目录无法解决我的问题,不过还是谢谢你的分享。是的,还是一样的。您正在尝试写入应用程序的资源包。你不能那样做。您需要将文件写入其他位置,例如
文档
目录。但最重要的一点是,仅获取路径不足以解决我的问题……您已经知道如何写入文件(调用
writeToFile:atomicaly:
)。重要的是使用正确的路径。实际上不是复制,因为仅获取绝对目录无法解决我的问题,但仍然感谢您的共享。是的,它是相同的。您正在尝试写入应用程序的资源包。你不能那样做。您需要将文件写入其他位置,例如
文档
目录。但最重要的一点是,仅获取路径不足以解决我的问题……您已经知道如何写入文件(调用
writeToFile:atomicaly:
)。重要的部分实际上是使用正确的路径。
- (BOOL)copyItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error