我有以下代码将对象保存到文件中......
-(int) saveObject: (id)object forKey: (NSString *) key
{
//save object into file
NSLog(@"PRESENT");
if(filePath == nil)
{
[self setFilePath:nil];
}
mainDict = [NSMutableDictionary dictionaryWithContentsOfFile:filePath];
if(mainDict == nil)
{
mainDict = [[NSMutableDictionary alloc] init];
}
[mainDict setObject:object forKey:key];
if(![mainDict writeToFile:filePath atomically:YES])
{
return 2; //ERROR could not write object to file
if(object == nil) {
return 3;
}
if(key == nil) {
return 4;
}
}
else
{
if(shouldUseCache == YES) {
cacheStatus = 2; //New Caches need to be updated
}
return 1; //SUCCESS object saved to file
}
//RETURN KEY's
// *1 SUCCESS object saved to file
// *2 ERROR could not write object to file
// *3 ERROR object variable = nil
// *4 ERROR key variable = nil
}
正如你所看到的那样,方法应该清楚地返回1到4之间的数字,但是当我在视图控制器中调用该方法时,我得到0 ???
最奇怪的部分是我甚至没有在我的控制台中收到NSLog(@“Present”)???
问题是什么以及导致这个问题的原因???
这是我的简单视图控制器......
NSLog(@"%d",[mainDict saveObject:@"HELLO" forKey:@"foo"]);
我的.h文件......
#import <UIKit/UIKit.h>
#import "ObjectSaver.h"
@interface ViewController : UIViewController {
ObjectSaver *mainDict;
}
答案 0 :(得分:2)
刚开始:这句话没有做任何事情:
if(filePath == nil) {
[self setFilePath:nil]; }
如果您的NSLog没有被命中,那么该函数根本不会被调用。你有没有断点进入函数并进行调试,看看它是否真的进入过?
正如评论所说,您的功能目前不会是return 3
或return 4
。为了能够这样做,return 2
应该在这2个if
块之后移动,以便如果其他2个无效,它可以是默认错误。