【问题标题】:saving/sharing a String in xcode在 xcode 中保存/共享字符串
【发布时间】:2012-08-16 03:51:34
【问题描述】:

我需要在我的应用程序中保存一个字符串,但我不想创建一个仅用于保存 1 个字符串的 plist 是否有其他方法可以做到这一点?我使用故事板。我试过segue,但没有用

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
   {
   if ([[segue identifier] isEqualToString: @"modal"])
   {
      ViewController *vc = (ViewController *)[segue destinationViewController];
      vc.subject = self.subject;
   }
}

【问题讨论】:

  • 究竟是哪个字符串,您需要在哪里使用该字符串?我看到你在ViewController 上设置主题(我假设它是你的 UIViewController 的子类)。如果你只是想让它在控制器之间保持而不传递它,你可以将它存储在 NSUserDefaults 假设它很小(几千字节左右)
  • 其实就是一个字串哈哈哈
  • 是的,然后像我一样在NSUserDefaults 中存储它并建议回答将起作用

标签: iphone ios xcode ipad storyboard


【解决方案1】:

“我需要在我的应用程序中保存一个字符串”是什么意思?您是否只想将字符串传递给目标 ViewController?

如果是这种情况,您可以在目标 ViewController 中定义一个新属性(假设您知道它是哪一个)

@property (nonatomic, strong) NSString *myProperty;

然后

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
   {
   if ([[segue identifier] isEqualToString: @"modal"])
   {
      [segue.destinationViewController setMyProperty:self.myProperty];
   }
}

如果你希望你的字符串可以从应用程序的任何地方访问,你可以很容易地将它保存到用户默认值:

[[NSUserDefaults standardUserDefaults]setObject:myProperty forKey:@"myPropertyKeyName"];

你可以稍后取回:

NSString *mySavedProperty= [[NSUserDefaults standardUserDefaults]stringForKey:@"myPropertyKeyName"];

【讨论】:

  • 我需要它在应用程序中是通用的,以便任何视图控制器都可以使用该字符串
  • 那么我建议的 NSUserDefaults 解决方案就可以了。
【解决方案2】:

如果你可以在项目中的任何地方使用字符串,只需像这样创建一个外部变量。

在 AppDelegate.h 中

extern NSString *stringObject;

在 AppDelegate.m 中

NSString *stringObject;

你可以在项目的任何地方使用stringObject。

【讨论】:

  • 我试过了,但没用,我收到此错误未定义的架构 i386 符号:“_subjects”,引用自:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-27
  • 2017-07-02
  • 1970-01-01
  • 2011-01-06
  • 2012-08-22
  • 1970-01-01
相关资源
最近更新 更多