NSKeyedArchiver için parametre değiştirildiDataWithRootObject: kaydetmeye çalıştığım dizi mi yoksa dizi mi yoksa NSData'ya mı dönüştürülüyor?NSKeyedArchiver archivedDataWithRootObject:
6
A
cevap
12
Genel bir diziyi NSData
'a dönüştürmek için bir arşivleyiciye ihtiyacınız var! NSData
'u nasıl besleyeceğinizi biliyorsanız, NSKeyedArchiver
'u nasıl kullanacağınızı bilirsiniz. Yani:
NSArray* array= ... ;
NSData* data=[NSKeyedArchiver archivedDataWithRootObject:array];
Elbette sizin array
ihtiyaçları tüm unsurları encodeWithCoder:
uygulamaktır.
13
Yuji'nin cevabı doğru. fakat daha doğrusu bir dizinin sizin eleman protokolünü uygulamak ve initWithCoder yöntemlere kendi kodunuzu fillin zorunda: ve encodeWithCoder: gibi:
- (id)initWithCoder:(NSCoder *)decoder {
if (self = [super init]) {
self.title = [decoder decodeObjectForKey:@"title"];
self.author = [decoder decodeObjectForKey:@"author"];
self.published = [decoder decodeBoolForKey:@"published"];
}
return self;
}
- (void)encodeWithCoder:(NSCoder *)encoder {
[encoder encodeObject:title forKey:@"time"];
[encoder encodeObject:author forKey:@"author"];
[encoder encodeBool:published forKey:@"published"];
}
sonra arşiv kullanabilir ve benzeri unchariver:
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:notes];
[[NSUserDefaults standardUserDefaults] setObject:data forKey:@"notes"];
NSData *notesData = [[NSUserDefaults standardUserDefaults] objectForKey:@"notes"];
NSArray *notes = [NSKeyedUnarchiver unarchiveObjectWithData:notesData];
Daha fazla bilgi için "Archiving Objective-C Objects with NSCoding" referansını alabilirsiniz.
İlgili konular
- 1. NSKeyedArchiver hangi biçimi kaydediyor?
- 2. NSKeyedArchiver nesnelerini yeni sürümlere dönüştürmek için
- 3. UIview'in bir kopyasını oluşturma (orijinal uiview'e bir işaretçi değil)
- 4. Bir NSObject öğesinin NSData'ya dönüştürülmesi
- 5. OSX için özel bir belge olmayan UTI/dosya türü nasıl kaydedilir?
- 6. Uygulama bildirimi yanlış Kullanım/Depolama
- 7. iOS Swift: CloudKit ile yerel kalıcılık
- 8. NSCoding nasıl birim testi yapılır?
- 9. NSCoding VS Çekirdek verileri
- 10. Seri hale getirme/serileştirme işleminden sonra neden bir UIColor değeri değişir?
- 11. NSData için NSImage, ardından UIImage için
- 12. NSData NSString olarak nasıl geçilir ve geri alınır?
- 13. iCloud & NSFileWrapper: 2 farklı dosyayı Ayarlar olarak gösteriliyor
- 14. float INFINITY, NSCoder tarafından arşivlenebilir, ancak arandığında değil
- 15. iPhone: UUImage'ı NSUserDefaults kullanarak nasıl kaydedebilirim?
- 16. nstableview Özel hücre görünümleriyle sürükleyip bırakın
- 17. Bir CGImageRef öğesinden oluşturulmuş bir UIImage nesnesini ham verilere dönüştürme ve geri dönme
- 18. MPMediaItemCollection nesnelerini sürdürmenin yolu nedir? (iPod'dan seçilen)
- 19. NSTextAttachment içeren NSAttributedString, saklanabilir (veya geri yüklenebilir)?
- 20. NSKeyedUnarchiver unarchiveObjectWithData dönen
- 21. Game Center Çöpçatanlık GKTurnBasedMatch anlamlı gecikme (~ 1 dk) var
- 22. bunu ben <code>NSUserDefaults</code> kullanarak kaydetmek istediğiniz Ben özel bir sınıf Oject sahip
- 23. NSUserDefaults
Tamlığı sağlamak için, tersini yapmak için bir NSKeyedUnarchiver kullanın. –
"dizideki tüm öğelerin encodeWithCoder uygulamasını gerçekleştirmesi gerekiyor:" <- Bu yalnızca özel nesneler için gerekli midir? –
dizininizdeki tüm öğelerin, Apple tarafından veya sizin tarafınızdan "encodeWithCoder:" uygulamasına sahip olması gerekir. Apple tarafından tedarik edilen bir nesnenin, resmi belgelere göz atarak bunu uygulayıp uygulamadığını kontrol edebilirsiniz ... "NSCoder" protokolünü uygulayıp uygulamadığını kontrol edebilirsiniz. – Yuji