【问题标题】:writing NSString type to a file将 NSString 类型写入文件
【发布时间】:2011-03-12 04:58:25
【问题描述】:


我正在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]];

【问题讨论】:

    标签: iphone nsstring char


    【解决方案1】:

    首先,对于当前的 char * 参数,您需要使用 %s 作为格式指令,而不是 %@。

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

    【讨论】:

    • 我进行了编辑,以便将 NSString 直接添加到 hofarray。 NSLog 显示它已成功添加到委托的 hofarray,然后我将其写入文件...但是从另一个模态视图调用 hofarray 显示它没有更新...可能是什么问题??
    • 有什么办法可以直接检查生成的 plist 以便检查更新的内容?
    • 既然您在添加项目后对数组进行排序,您确定它仍然是数组中的最后一项吗?因为您添加的代码总是在寻找数组中的最后一项。
    • 你是对的!我应该直接将项目添加到 hofArray
    【解决方案2】:

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


    编辑: 如果您真的想将其保存在文件系统中,请查看NSKeyedArchiver 方法+ (BOOL)archiveRootObject:(id)rootObject toFile:(NSString *)pathNSKeyedUnarchiver 方法+ (id)unarchiveObjectWithFile:(NSString *)path


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


    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-25
      • 2011-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-30
      • 2016-03-03
      相关资源
      最近更新 更多