У меня есть следующий код, который сохраняет объект в файл ...Сохранение объекта в файлах
-(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;
}
Похоже, что пути 'return 3' или' return 4' могут быть достигнуты ... – gcbenison
Да, у вас определенно отсутствует закрывающая скобка '}' после 'return 2;' ... – WendiKidd
Правильно. Если он терпит неудачу, он всегда будет возвращен 2. Чтобы исправить это, вы должны переместить 'return 2' после операторов 2 if для' return 3' и 'return 4' – Dima