【问题标题】:saving and loading custom objects保存和加载自定义对象
【发布时间】:2013-02-03 15:22:05
【问题描述】:

我是 iPhone 开发的新手。我的问题是我有一些自定义对象的NSMutableArray。每个对象都有 4 个属性,即名称(NSString)、图像(UIImage)、按钮(UIButton)和与之关联的布尔值。按钮以编程方式随机生成,并在视图加载时放置在视图上(在viewDidLoad 内)。如何保存这个对象数组并在用户退出然后重新进入应用程序时重新生成它。按钮还必须保留它们在视图上的位置。 提前致谢。

【问题讨论】:

    标签: ios objective-c


    【解决方案1】:

    您可以使用 ARC,一种 GC。 所有对象在超出引用时都会被释放。 我可以向您展示保留这些对象的 2 个想法。

    1:将这些对象保留在父 ViewController 或 Delegate 类中。

    您可以在父 ViewControler 或 Delegate 类上提前声明所有对象。

    NSMutableCustomArray *customArray = [NSMutableCustomArray array];
    [customArray setParameters];
    ChildView *childView = [[ChildView alloc] init];
    [customArray setCustomArray:customArray];
    [self.view addSubview:ChildView];
    

    customArray 中的所有对象都不会向外引用,除非父对象存在。

    2:使用 CoreData 或 NSUserDefaults。

    如果您想要简单的数据、字符串、布尔值等,NSUserDefaults 非常有用。 至于UIButton,你要恢复位置很累。

    [defaults setObject:string forKey:@"customString"];
    [defaults setFloat:10.0 forKey:@"button_x"];
    [defaults setFloat:10.0 forKey:@"button_y"];
    [defaults setFloat:10.0 forKey:@"button_width"];
    [defaults setFloat:10.0 forKey:@"button_height"];
    

    【讨论】:

    • 您可以使用NSStringFromCGRect()frame 编码为字符串,并将该字符串存储在NSUserDefaults 中,而不是单独手动处理x/y/width/height。加载时,您将使用 CGRectFromString() 从字符串创建一个 CGRect。
    • @akiniwa 非常感谢..!!
    • @Kitsune 太有帮助了..! :).. 非常感谢!.. 使用 NSStringFromCGRect() 保存按钮框架不那么累了。
    猜你喜欢
    • 2011-11-08
    • 2017-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-15
    • 1970-01-01
    • 2013-07-22
    相关资源
    最近更新 更多