คำถามติดแท็ก nsuserdefaults

NSUserDefaults คือ Objective-C API สำหรับจัดเก็บและเรียกคืนค่ากำหนดของผู้ใช้ในกรอบงานพื้นฐานของ Apple สำหรับ Cocoa และ Cocoa Touch พร้อมใช้งานใน OS X v10.0 และใหม่กว่าและพร้อมใช้งานใน iOS 2.0 ขึ้นไปซึ่งสืบทอดมาจากคลาสรูทของ NSObject

15
การล้าง NSUserDefaults
ฉันใช้+[NSUserDefaults standardUserDefaults]เพื่อจัดเก็บการตั้งค่าแอปพลิเคชัน สิ่งนี้ประกอบด้วยค่าสตริงประมาณโหล เป็นไปได้ไหมที่จะลบค่าเหล่านี้อย่างถาวรแทนที่จะตั้งเป็นค่าเริ่มต้น?

14
iOS: วิธีการจัดเก็บชื่อผู้ใช้ / รหัสผ่านภายในแอป
ฉันมีหน้าจอเข้าสู่ระบบในแอพ iOS ของฉัน ชื่อผู้ใช้และรหัสผ่านจะถูกบันทึกไว้ในNSUserDefaultsและจะถูกโหลดเข้าสู่หน้าจอการเข้าสู่ระบบอีกครั้งเมื่อคุณเข้าสู่แอปอีกครั้ง (แน่นอนNSUserDefaultsเป็นแบบถาวร) ตอนนี้ผู้ใช้มีความเป็นไปได้ที่จะปิดการใช้งานคุณสมบัติการบันทึกชื่อผู้ใช้ / รหัสผ่าน ดังนั้นNSUserDefaultsจะถูกล้างออกแล้ว แต่ในแอพของฉันฉันต้องการชื่อผู้ใช้ / รหัสผ่านนี้สำหรับการสืบค้นฐานข้อมูลสำหรับผู้ใช้ ดังนั้น: จะเก็บข้อมูลNSUserDefaultsที่ไหน (สถานที่นี้สามารถ / ควรถูกลบเมื่อผู้ใช้ออกจากแอปหรือออกจากระบบ)

7
วิธีเก็บวัตถุที่กำหนดเองใน NSUserDefaults
เอาล่ะฉันได้ทำอะไรบ้างแล้วฉันก็ตระหนักถึงปัญหาของฉัน แต่ฉันไม่รู้วิธีแก้ไข ฉันสร้างคลาสที่กำหนดเองเพื่อเก็บข้อมูลบางอย่าง ฉันทำวัตถุสำหรับชั้นนี้และฉันต้องการให้พวกเขาสุดท้ายระหว่างช่วง ก่อนที่ฉันจะใส่ข้อมูลทั้งหมดของฉันเข้าไปNSUserDefaultsแต่สิ่งนี้ไม่ทำงาน -[NSUserDefaults setObject:forKey:]: Attempt to insert non-property value '<Player: 0x3b0cc90>' of class 'Player'. นั่นคือข้อผิดพลาดที่ฉันได้รับเมื่อฉันใส่ชั้นเรียนของฉันที่กำหนดเอง "ผู้เล่น" NSUserDefaultsใน ตอนนี้ฉันได้อ่านที่เห็นได้ชัดว่าNSUserDefaultsเก็บข้อมูลบางประเภทเท่านั้น แล้วฉันจะนำวัตถุของฉันเข้าไปได้NSUSerDefaultsอย่างไร ฉันอ่านว่าควรมีวิธีการ "เข้ารหัส" วัตถุที่กำหนดเองของฉันแล้ววางไว้ แต่ฉันไม่แน่ใจว่าจะใช้งานได้อย่างไรความช่วยเหลือจะได้รับการชื่นชม! ขอบคุณ! **** **** แก้ไข เอาล่ะฉันทำงานกับรหัสที่ระบุด้านล่าง (ขอบคุณ!) แต่ฉันยังคงมีปัญหาอยู่ โดยพื้นฐานแล้วรหัสขัดข้องตอนนี้และฉันไม่แน่ใจว่าทำไมเพราะมันไม่ได้มีข้อผิดพลาดใด ๆ บางทีฉันขาดพื้นฐานบางอย่างและฉันเหนื่อยเกินไป แต่เราจะเห็น นี่คือการใช้งานคลาสที่กำหนดเองของฉัน "ผู้เล่น": @interface Player : NSObject { NSString *name; NSNumber *life; //Log of …



11
NSUserDefaults - จะทราบได้อย่างไรว่ามีกุญแจอยู่หรือไม่
ฉันกำลังทำงานกับแอพเล็ก ๆ ของ iPhone และฉันใช้NSUserDefaultsเป็นข้อมูลอย่างต่อเนื่อง มันจะต้องติดตามสิ่งเล็ก ๆ น้อย ๆ อย่างเช่นชื่อบางชื่อและตัวเลขบางส่วนดังนั้นฉันจึงคิดว่าฉันอาจจะเข้าใจได้ง่าย ฉันพบหน้านี้สำหรับการอ้างอิง แต่ฉันคิดว่ามันไม่สามารถตอบคำถามของฉันได้ โดยทั่วไปฉันต้องการที่จะสามารถตรวจสอบว่ามีค่า (หรือคีย์) อยู่แล้วในNSUserDefaultsและจากนั้นทำบางสิ่งตาม ตัวอย่างบางส่วน: แอปเริ่มต้นขึ้นหากนี่เป็นครั้งแรกที่แอปเริ่มส่งออกการแจ้งเตือนว่ายินดีต้อนรับ หากต้องการทราบว่านี่เป็นครั้งแรกที่เปิดขึ้นมาจะอ่านUserDefaultsและตรวจสอบ ตัวอย่างที่ 2: มันบอกว่า "สวัสดี [ชื่อ]" โดยที่ชื่อคือสิ่งที่คุณป้อน หากคุณได้เปิดแอปและไม่มีชื่อมันควรจะพูดว่า "Hello World" ฉันต้องตรวจสอบว่าคุณป้อนชื่อแล้วและดำเนินการตามนั้น NSUserDefaultsชื่อที่จะถูกเก็บไว้ใน ความช่วยเหลือที่นี่? ฉันซาบซึ้งจริงๆ!

11
พยายามตั้งค่าวัตถุที่ไม่ใช่รายการทรัพย์สินเป็น NSUserDefaults
ฉันคิดว่าฉันรู้ว่าสิ่งใดที่ทำให้เกิดข้อผิดพลาดนี้ แต่ฉันไม่สามารถเข้าใจได้ว่าฉันทำอะไรผิด นี่คือข้อความแสดงข้อผิดพลาดทั้งหมดที่ฉันได้รับ: พยายามตั้งค่าวัตถุที่ไม่ใช่รายการทรัพย์สิน ( "<BC_Person: 0x8f3c140>" ) เป็นค่า NSUserDefaults สำหรับคีย์ personDataArray ฉันมีPersonชั้นเรียนที่ฉันคิดว่าสอดคล้องกับNSCodingโปรโตคอลที่ฉันมีทั้งสองวิธีในชั้นเรียนส่วนตัวของฉัน: - (void)encodeWithCoder:(NSCoder *)coder { [coder encodeObject:self.personsName forKey:@"BCPersonsName"]; [coder encodeObject:self.personsBills forKey:@"BCPersonsBillsArray"]; } - (id)initWithCoder:(NSCoder *)coder { self = [super init]; if (self) { self.personsName = [coder decodeObjectForKey:@"BCPersonsName"]; self.personsBills = [coder decodeObjectForKey:@"BCPersonsBillsArray"]; } return self; } ณ จุดใน app …

4
วิธีที่ดีที่สุดในการจัดเก็บ NSDate ใน NSUserDefaults คืออะไร
มีสองวิธีในการจัดเก็บ NSDate ใน NSUserDefaults ที่ฉันเจอ ตัวเลือกที่ 1 - setObject: forKey: // Set NSDate *myDate = [NSDate date]; [[NSUserDefaults standardUserDefaults] setObject:myDate forKey:@"myDateKey"]; // Get NSDate *myDate = (NSDate *)[[NSUserDefaults standardUserDefaults] objectForKey:@"myDateKey"]; ตัวเลือก 2 - timeIntervalSince1970 // Set NSDate *myDate = [NSDate date]; NSTimeInterval myDateTimeInterval = [myDate timeIntervalSince1970]; [[NSUserDefaults standardUserDefaults] setFloat:myDateTimeInterval forKey:@"myDateKey"]; …

10
วิธีบันทึกข้อมูลในเครื่องในแอพ Swift
ขณะนี้ฉันกำลังทำงานกับแอพ iOS ที่พัฒนาใน Swift และฉันต้องการจัดเก็บเนื้อหาที่ผู้ใช้สร้างขึ้นบนอุปกรณ์ แต่ดูเหมือนว่าฉันไม่สามารถหาวิธีที่ง่ายและรวดเร็วในการจัดเก็บ / รับเนื้อหาผู้ใช้บนอุปกรณ์ มีใครช่วยอธิบายวิธีจัดเก็บและเข้าถึงที่จัดเก็บในตัวเครื่องได้บ้าง แนวคิดคือการจัดเก็บข้อมูลเมื่อผู้ใช้ดำเนินการกระทำและรับมันเมื่อแอปเริ่มต้น

6
ทำไม NSUserDefaults จึงไม่สามารถบันทึก NSMutableDictionary ใน iOS ได้
ฉันต้องการที่จะบันทึกวัตถุในNSMutableDictionary NSUserDefaultsชนิดที่สำคัญในการNSMutableDictionaryมีNSStringประเภทค่าเป็นซึ่งมีรายชื่อของวัตถุที่นำไปปฏิบัติNSArray NSCodingต่อเอกสารNSStringและทั้งสองมีความสอดคล้องกับNSArrayNSCoding ฉันได้รับข้อผิดพลาดนี้: [NSUserDefaults setObject: forKey:]: พยายามแทรกค่าที่ไม่ใช่คุณสมบัติ .... ของคลาส NSCFDictionary



6
NSUserDefaults ยังคงมีอยู่ผ่านการอัปเดตแอปใน Appstore หรือไม่
กรณีนี้หรือไม่ NSUserDefaults จะได้รับการรีเซ็ตเมื่อคุณส่งการอัปเดตไปยังแอปบน App Store หรือถูกรีเซ็ต แอปของฉันขัดข้องเมื่ออัปเดต แต่ไม่หยุดทำงานเมื่อดาวน์โหลดเสร็จ - ดังนั้นฉันจึงพยายามพิจารณาว่าอะไรที่อาจแตกต่างกันในเซสชันที่อัปเดตกับเซสชันที่ดาวน์โหลดใหม่ ไชโยนิค

1
Android เทียบเท่ากับ NSUserDefaults ใน iOS
ฉันต้องการบันทึกข้อมูลง่ายๆ ใน iPhone ฉันสามารถทำได้ด้วยNSUserDefaultsObjective-C คำสั่งที่คล้ายกันใน Android คืออะไร? ฉันแค่บันทึกตัวแปรสองสามตัวเพื่อนำกลับมาใช้ตราบเท่าที่ติดตั้งแอปพลิเคชัน ฉันไม่ต้องการใช้ฐานข้อมูลที่ซับซ้อนเพียงเพื่อทำเช่นนั้น

7
NSUserDefaults ไม่ถูกล้างหลังจากถอนการติดตั้งแอปบนโปรแกรมจำลอง
นี่อาจฟังดู NOOB จริง! ฉันต้องการตรวจสอบว่าเป็นครั้งที่สองที่ผู้ใช้เข้าสู่แอปพลิเคชันของฉันหรือไม่ดังนั้นเพื่อรักษาจำนวนการรันที่ฉันใช้NSUserDefaultsอยู่ ฉันได้ดำเนินรหัสต่อไปนี้ในของฉันrootViewController's viewDidLoadวิธีการ: NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; NSLog(@"hello %ld", (long)[userDefaults integerForKey:@"runCount"]); if ([userDefaults integerForKey:@"runCount"] != 1) { //not the 2nd run [userDefaults setInteger:1 forKey:@"runCount"]; NSLog(@"not 2nd run"); } else { //second run or more NSLog(@"2nd run"); } [userDefaults synchronize]; ทุกอย่างทำงานได้ดี แต่ปัญหาคือเมื่อฉันถอนการติดตั้ง (ลบและติดตั้งใหม่) แอปพลิเคชันตามที่นี่และที่นี่ข้อมูลควรจะถูกล้าง แต่ไม่เป็นเช่นนั้นและหลังจากติดตั้งแอปใหม่ข้อมูลก่อนหน้านี้ยังคงปรากฏขึ้น ฉันใช้งานแอปของฉันบนโปรแกรมจำลอง iOS …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.