0

NSUserdefault は同じ名前の 2 つの配列を保存できますか、それとも以前の配列を置き換えますか?

4

1 に答える 1

1

はい、同じ変数に置き換え、xcodeは同じクラス内のオブジェクトの同じ名前を複製することを許可されていないため、クラスから配列名を1つも削除しない限り、アプリケーションはコンパイルされません...

アップデート:-

ファイルでAppDelegate.h変数を宣言するだけです...

NSUserDefaults  *userDefaults;
NSMutableArray *yourArray;

後...

AppDelegate.mインフィルインapplicationDidFinishLonching:方式

userDefaults = [NSUserDefaults standardUserDefaults];
    NSData *dataRepresentingtblArrayForSearch = [userDefaults objectForKey:@"yourArray"];
    if (dataRepresentingtblArrayForSearch != nil) {
        NSArray *oldSavedArray = [NSKeyedUnarchiverunarchiveObjectWithData:dataRepresentingtblArrayForSearch];
        if (oldSavedArray != nil)
            yourArray = [[NSMutableArray alloc]initWithArray:oldSavedArray];
        else
            yourArray = [[NSMutableArray alloc] init];
    } else {
        yourArray = [[NSMutableArray alloc] init];
    }
    [yourArray retain];

その後、このユーザーからデータを挿入、更新、または削除する場合は、次のコードを使用してください...

レコードを削除するには、以下を使用します        

[appDelegate.yourArray removeObjectAtIndex:IndexValue];// define integer value here on IndexValue

         またはレコードを挿入するには、以下を使用します..

       

[appDelegate.yourArray addObject:AddValueHere];

または、配列全体を新しい配列に置き換えてから、これを記述します

appDelegate.yourArray = YourNewArray; 

[appDelegate.yourArray retain];

その後、次のsynchronize NSUserDefaultsようにデータ全体を保存します...         

NSData *data=[NSKeyedArchiverarchivedDataWithRootObject:appDelegate.yourArray];
    [appDelegate.userDefaults setObject:data forKey:@"yourArray"];
    [appDelegate.userDefaults synchronize];
于 2012-11-01T12:43:01.933 に答える