2010-12-12 2 views
0

я делаю:NSKeyedUnarchiver: iPhone .v. Тренажер

NSString *current_path = [[NSBundle mainBundle] bundlePath]; 

NSString *string_path = [NSString stringWithFormat: 
            @"%@/filedstring", current_path]; 

my_string_ = [[NSKeyedUnarchiver unarchiveObjectWithFile:string_path] retain]; 

архивированной строка текст из UITextField который мы Разархивировать здесь. Я пробовал с и без current_path.

Все это прекрасно работает при работе в симуляторе (класс NSString *my_string_ не ноль), но при запуске на моем iPhone my_string_ нет.

Почему?


Благодарим за ответы на все вопросы.

Добавление ответа Джейсон Коко, архив до и разархивировать здесь:

NSString *library_path = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, 
             NSUserDomainMask, YES) objectAtIndex:0]; 
NSString *username_path = [library_path 
          stringByAppendingPathComponent:@"Caches/filedstring"]; 
+0

Быстрый совет: при создании путей с использованием 'NSString' используйте метод' stringByAppendingPathComponent: '. См. Http://bit.ly/fRKJZL –

+0

«Объектив-C, iPhone, NSKeyedUnarchiver» не очень описательный заголовок. – vikingosegundo

+0

@vikingosegundo: Вы можете порекомендовать название, которое было бы более наглядным, пожалуйста? @ShaggyFrog: Да, конечно. – SK9

ответ

4

Вы не можете писать в основной комплект телефона, это запрещено. Вот почему вы не нашли свой архив там позже. Симулятор, поскольку он фактически работает на Mac OS X, не работает таким образом, поэтому он фактически напишет файл.

Если вам нужно что-то написать, вы должны использовать один из доступных для записи путей, доступных для вашего приложения. Для получения дополнительной информации см. iOS Application Programming Guide/The File System. Если вы собираетесь заниматься разработкой приложений iOS, вам обязательно нужно прочитать и понять весь этот документ.

+0

Бинго. Спасибо. И вы, конечно, правы, читая все документы, я учусь и читаю, когда я иду. Я неполный рабочий день. Документы также имеют больше смысла для меня, чем больше у меня опыта. – SK9

0

Как @middaparka говорит, то, вероятно, что-то не так с этим файлом. Вот как я бы отладить эту проблему:

Первый шаг,

[[NSFileManager defaultManager] fileExistsAtPath: string_path]; 

Второй шаг,

NSError *err; 
NSString *tmp = [NSString stringWithContentsOfFile:string_path encoding:NSUTF8StringEncoding error:&err]; 
NSLog(@"Contents of string %@",tmp); 

После того, как вы сделали те, вы должны иметь гораздо более четкое представление о том, почему ваш NSKeyedUnarchiver является терпит неудачу. Кроме того, ознакомьтесь с методом NSString stringByAppendingPathComponent:.

 Смежные вопросы

  • Нет связанных вопросов^_^