запись типа NSString в файл - PullRequest
0 голосов
/ 12 марта 2011


Я реализую следующую функцию на appdelegate,
но мне нужно написать NSString тип вместо типичных значений с плавающей запятой.
Поскольку xcode не позволяет объекту находиться в желаемой позиции,
Вместо этого я использовал char*, как показано ниже, где мои данные для передачи имеют тип NSString.
Как и ожидалось, это не работает ...
Как я мог манипулировать этим, чтобы я мог написать NSString тип данных?
Должен ли я сделать некоторые преобразования?
Пожалуйста, помогите мне ..

- (void)addHallOfFamer:(char*)newHofer{
    [hofArray addObject:[NSString stringWithFormat:@"%@",newHofer]];
    [hofArray sortUsingSelector:@selector(compare:)];
    NSArray* paths =
    NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString* documentsDirectory = [paths objectAtIndex:0];
    NSString* hofArrayPath = [documentsDirectory
                          stringByAppendingPathComponent:@"hofers.plist"];
    [hofArray writeToFile:hofArrayPath atomically:YES];
}

(добавлено) далее я вызываю написанные строки NSStrings из другого представления, которое не отражает мое обновление.

MainAppDelegate* delegate;
delegate = (MainAppDelegate*)[[UIApplication sharedApplication] delegate];
NSArray *hofers = [[delegate.hofArray reverseObjectEnumerator] allObjects];
hoferName1.text = [NSString stringWithFormat:@"%@",[hofers objectAtIndex:0]];

Ответы [ 2 ]

1 голос
/ 12 марта 2011

Во-первых, с текущим аргументом char * вам нужно использовать% s в качестве директивы формата, а не% @.

Во-вторых, чтобы использовать NSString * в качестве аргумента, просто добавьте его вhofArray.

0 голосов
/ 12 марта 2011

Самое простое решение - просто сохранить массив в NSUserDefaults.Поскольку это массив строк, его сохранение и извлечение таким образом должно работать нормально и будет проще, чем работа с файловой системой iOS.


Редактировать: если вы действительно хотите сохранить его в файловой системе,Изучите метод NSKeyedArchiver + (BOOL)archiveRootObject:(id)rootObject toFile:(NSString *)path и метод NSKeyedUnarchiver + (id)unarchiveObjectWithFile:(NSString *)path.


Редактировать 2: Как указал ondmike, вам нужно использовать %s вместо %@ для правильного вызова вашего метода -stringWithFormat:.Соответствующая документация: Спецификаторы формата строки


...