0

選択したテーブル ビューの行のセル タイトルを NSUserDefaults に保存しようとしています。didSelectRowAtIndexPath:メソッドに次のコードがあります。現時点では、これにより listOfItems (NSMutableArray) 全体が保存されます。ユーザーがテーブル行で選択した listOfItems 配列オブジェクトを保存して取得できるようにしたいと考えています。

助けてくれてありがとう

これは、viewDidLoad で初期化される NSMutableArray です。

listOfItems = [[NSMutableArray alloc] init];

[listOfItems addObject:@"Brazil"];
[listOfItems addObject:@"Italy"];
[listOfItems addObject:@"Spain"];
[listOfItems addObject:@"United Kingdom"];
[listOfItems addObject:@"United States"];

didSelectRowAtIndexPath: メソッド

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

    NSMutableData *data = [NSMutableData data];
    NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
    // Customize archiver here
    [archiver encodeObject:listOfItems forKey:@"keyForYourArrayOfNSIndexPathObjects"];
    [archiver finishEncoding];
    [[NSUserDefaults standardUserDefaults] setObject:data forKey:@"keyForYourArrayOfNSIndexPathObjects"];


    NSKeyedUnarchiver *unarchiver;
    unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:
                  [[NSUserDefaults standardUserDefaults] objectForKey:@"keyForYourArrayOfNSIndexPathObjects"]];
    // Customize unarchiver here
    listOfItems2 = [unarchiver decodeObjectForKey:@"keyForYourArrayOfNSIndexPathObjects"];
    [unarchiver finishDecoding];

    NSLog(@"from the list of items: %@", listOfItems2[2]);
}

NSLog の出力は次のとおりです。「アイテムのリストから: スペイン」

4

2 に答える 2

2

あなたdidSelectRowAtIndexPathは次のことを行う必要があります

int index = indexPath.row;
id obj = [listOfItems objectAtIndex:index];

次に、必要な方法でユーザーのデフォルトに保存します

于 2012-11-20T12:47:28.467 に答える
1

選択した国の名前を保存したい場合は、次のように記述します。

NSString *save = [listOfItems objectAtIndex:indexPath.row];
[[NSUserDefaults standardUserDefaults] setObject:save forKey:@"selectedCountry"];

次のように取得します。

NSString *saved = (NSString *) [[NSUserDefaults standardUserDefaults] objectforKey:@"selectedCountry"];
于 2012-11-20T12:47:20.420 に答える