あるViewControllerから別のViewControllerに可変配列を渡すときに、メモリの警告が表示されます。可変配列をuiviewcontrollerに渡すより良い方法はありますか?//ここにメモリ警告。
Item *item = [self.items objectAtIndex:index ];
あるViewControllerから別のViewControllerに可変配列を渡すときに、メモリの警告が表示されます。可変配列をuiviewcontrollerに渡すより良い方法はありますか?//ここにメモリ警告。
Item *item = [self.items objectAtIndex:index ];
ViewController AからBにNSMutableArrayを渡す最良の方法は、ViewControllerAからのセグエでそれを行うことです。
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"Some segue"])
{
[segue.destinationViewController setPassedArray:self.someMutableArray];
}
}
そして、これをファイルViewControllerB
に追加しますViewControllerB.h
@property(nonatomic, strong) NSMutableArray *passedArray
これで、移動するViewControllerB
someMutableArray
たびにViewControllerBに渡され、次のように設定されます。passedArray
AコントローラーがBコントローラーを押すと、配列をシリアル化できます。
-(void)viewDidDisappear:(BOOL)animated
{
NSArray* array = .....
[array addObject:obj];//obj have to implements NSCopying,NSCoding
NSData *archiveCarPriceData = [NSKeyedArchiver archivedDataWithRootObject:array];
[[NSUserDefaults standardUserDefaults] setObject:archiveCarPriceData forKey:@"your key"];
}
B コントローラー:
-(void)viewDidLoad
{
NSData *myEncodedObject = [[NSUserDefaults standardUserDefaults] objectForKey:@"your key"];
NSArray* array = [NSKeyedUnarchiver unarchiveObjectWithData: myEncodedObject];
}
または、ファイルに保存できます
{
//save arr to file
NSArray* arr;
[arr writeToFile:@"path" atomically:YES];
//read arr from file
arr = [NSArray arrayWithContentsOfFile:@"path"]
}