NSUserDefaults 不会存储我的 NSStrings

发布于 2024-12-29 09:55:04 字数 1417 浏览 4 评论 0原文

我试图在我的 NSUserDefaults 中存储几个字符串...无法弄清楚我做错了什么...

-(IBAction)addToFavorite:(id)sender {
    NSMutableArray* favoritedAlready = [[[NSUserDefaults standardUserDefaults] objectForKey:@"favorites"] mutableCopy];

NSLog(@"%@",favoritedAlready);


    if (![favoritedAlready containsObject:indexPathRowString]) {
        [favoritedAlready addObject:indexPathRowString];
        [[NSUserDefaults standardUserDefaults] setObject:favoritedAlready forKey:@"favorites"];
        [[NSUserDefaults standardUserDefaults] synchronize];
        favoritMarkerad.image = [UIImage imageNamed:@"StarFilled.png"];}

    else {
        [favoritedAlready removeObject:indexPathRowString];
        [[NSUserDefaults standardUserDefaults] setObject:favoritedAlready forKey:@"favorites"];
        [[NSUserDefaults standardUserDefaults] synchronize];
        favoritMarkerad.image = [UIImage imageNamed:@"StarEmpty.png"];
   }

当我尝试在另一个视图控制器中加载数组时没有任何反应..

(.h)
NSMutableArray *favorites_;
@property (nonatomic, retain) NSMutableArray *favorites_;

(.m)
@synthesize favorites_;

-(void)makeData{

NSMutableArray* favoritedAlready = [[NSUserDefaults standardUserDefaults] objectForKey:@"favorites"];
    [[NSUserDefaults standardUserDefaults] synchronize];

    favorites_ = favoritedAlready;}

“NSLog(@”% @“,已收藏);”给出“2012-01-25 14:53:26.360 myApp[2752:1be03] (null)” 有什么想法吗?

i've tried to store a couple of strings in my NSUserDefaults... can't figure out what i'm doing wrong...

-(IBAction)addToFavorite:(id)sender {
    NSMutableArray* favoritedAlready = [[[NSUserDefaults standardUserDefaults] objectForKey:@"favorites"] mutableCopy];

NSLog(@"%@",favoritedAlready);


    if (![favoritedAlready containsObject:indexPathRowString]) {
        [favoritedAlready addObject:indexPathRowString];
        [[NSUserDefaults standardUserDefaults] setObject:favoritedAlready forKey:@"favorites"];
        [[NSUserDefaults standardUserDefaults] synchronize];
        favoritMarkerad.image = [UIImage imageNamed:@"StarFilled.png"];}

    else {
        [favoritedAlready removeObject:indexPathRowString];
        [[NSUserDefaults standardUserDefaults] setObject:favoritedAlready forKey:@"favorites"];
        [[NSUserDefaults standardUserDefaults] synchronize];
        favoritMarkerad.image = [UIImage imageNamed:@"StarEmpty.png"];
   }

when I try to load my array in another viewcontroller nothing happens..

(.h)
NSMutableArray *favorites_;
@property (nonatomic, retain) NSMutableArray *favorites_;

(.m)
@synthesize favorites_;

-(void)makeData{

NSMutableArray* favoritedAlready = [[NSUserDefaults standardUserDefaults] objectForKey:@"favorites"];
    [[NSUserDefaults standardUserDefaults] synchronize];

    favorites_ = favoritedAlready;}

"NSLog(@"%@",favoritedAlready);" gives "2012-01-25 14:53:26.360 myApp[2752:1be03] (null)"
any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

叫思念不要吵 2025-01-05 09:55:04

根据您的评论,问题是您的 NSUserDefaults 中任何时候都没有名为“favorites”的数组。如果它不存在,您可能想创建一个。所以:

-(IBAction)addToFavorite:(id)sender {
    // get a mutable copy of the stored array, if there is one
    NSMutableArray* favoritedAlready = [[[NSUserDefaults standardUserDefaults] 
                     objectForKey:@"favorites"] mutableCopy];

    // if there wasn't a stored array then go ahead and create one to store
    if(!favoritedAlready)
        favoritedAlready = [NSMutableArray array];

    /* ... rest of stuff here ... */
    if (![favoritedAlready ...

Based on your comment, the problem is that there is no array in your NSUserDefaults named 'favorites' at any point. Probably you want to create one if it doesn't exist. So:

-(IBAction)addToFavorite:(id)sender {
    // get a mutable copy of the stored array, if there is one
    NSMutableArray* favoritedAlready = [[[NSUserDefaults standardUserDefaults] 
                     objectForKey:@"favorites"] mutableCopy];

    // if there wasn't a stored array then go ahead and create one to store
    if(!favoritedAlready)
        favoritedAlready = [NSMutableArray array];

    /* ... rest of stuff here ... */
    if (![favoritedAlready ...
蘸点软妹酱 2025-01-05 09:55:04

NSMutableArray 在第一点处为 (null),因此您可以

    if (favoritedAlready == nil) {
        favoritedAlready = [[NSMutableArray alloc] init];
    }

mutableCopy 方法之后执行此操作。
因此,您将向 NSMutableArray 添加值,而不是将其添加到(空)对象


就像 Tommy 所说的

The NSMutableArray is (null) at the first point, so you could do this:

    if (favoritedAlready == nil) {
        favoritedAlready = [[NSMutableArray alloc] init];
    }

right after the mutableCopy method.
So you'll be adding values to the NSMutableArray instead of adding it to a (null) object


Just like what Tommy said

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文