سؤال

وأنا جعل التطبيق فون حيث أريد لإنقاذ الدولة من التطبيقات. وهذا يشمل خاصية كثافة العمليات التي أنا المستمر إلى ملف من تلقاء نفسها. لدي مكتوبة والعمل، ولكن أنا أعلم أن الطريقة التي فعلت كان hacky قليلا، وتحويل الباحث إلى سلسلة ثم NSData. أي شخص يمكن أن تشير إلى طريقة أفضل؟

int someInt = 1;
NSString *aString = [NSString stringWithFormat:@"%d",someInt];
NSData *someData = [aString dataUsingEncoding:NSUTF8StringEncoding];
[someData writeToFile:[documentsDirectory stringByAppendingString:@"someFile"] atomically:YES];

وثم قراءتها من القرص وإعادته إلى عدد صحيح -

NSData* someData = [NSData dataWithContentsOfFile:[documentsDirectory stringByAppendingString:@"someFile"]];
NSString *aString = [[NSString alloc] initWithData:someData encoding:NSUTF8StringEncoding];
int someInt = [aString intValue];
هل كانت مفيدة؟

المحلول

لإرسال:

int i = 1;
NSData *data = [NSData dataWithBytes: &i length: sizeof(i)];
[data writeToFile: [documentsDirectory stringByAppendingString: @"someFile"] atomically: YES]

وقراءة مرة أخرى:

NSData *data = [NSData dataWithContentsOfFile: [documentsDirectory stringByAppendingString: @"someFile"]];
int i;
[data getBytes: &i length: sizeof(i)];

ولكن، هل حقا يجب أن تستخدم NSUserDefaults عن شيء مثل هذا، في هذه الحالة تريد ان تكون بهذا الأمر:

[[NSUserDefaults standardUserDefaults] setInteger: i forKey: @"someKey"]

والكتابة، و

int i = [[NSUserDefaults standardUserDefaults] integerForKey: @"someKey"];

والقراءة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top