2011-03-12 36 views
0


我执行上appdelegate下面的函数,
但我需要写NSString类型,而不是典型的浮点值。
由于xcode的不允许一个目的是在我的期望的位置,
我用char*代替如下,其中作为我的数据传递是NSString类型。
正如预期的那样,它不起作用...
我该如何处理它,以便我可以编写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]; 
} 

(添加) 下面是我如何打电话是从另一种观点认为,这并不反映我更新的书面NSString的。

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

回答

1

首先,与目前char *说法,你需要使用%S作为您的格式指令,而不是%@。

其次,要使用NSString *作为您的参数,只需将其添加到hofArray。

+0

我编辑过,以便NSString直接添加到hofarray。 NSLog显示它已成功添加到委托的hofarray中,然后我将它写入文件...但是从另一个模态视图调用hofarray表明它没有更新......可能是什么原因? – CosmicRabbitMediaInc

+0

有什么方法可以直接检查生成的plist,以便我可以检查更新的内容? – CosmicRabbitMediaInc

+0

由于您在添加项目后对数组进行排序,您确定它仍然是数组中的最后一项吗?因为您添加的代码始终在查找数组中的最后一项。 – ondmike

0

最简单的解决方案是将数组保存在NSUserDefaults中。由于它是一个字符串数组,因此以这种方式保存并检索它应该可以正常工作,并且比处理iOS文件系统更容易。


编辑: 如果你真的希望将其保存在文件系统中,考虑了NSKeyedArchiver方法+ (BOOL)archiveRootObject:(id)rootObject toFile:(NSString *)pathNSKeyedUnarchiver方法+ (id)unarchiveObjectWithFile:(NSString *)path


编辑2: 作为ondmike指出的那样,你需要使用%s而不是%@-stringWithFormat:方法调用正常工作。相关文件是String Format Specifiers