2012-06-02 9 views
5

Bu gerçekten beni sinir ediyor. Objective-C'de, Deleted boole özniteliğine sahip Item varlığım var. Ben EVET Deleted veya 1Niçin temel veri varlık özniteliğimin boolean değerini güncelleyemiyorum?

değerini ayarlamak mümkün olmak istiyorum Bu benim kodudur: nota

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Item" inManagedObjectContext:managedObjectContext]; 
[fetchRequest setEntity:entity]; 

NSString *itemID = [[fetchedObjects objectAtIndex:(int)[currentTable selectedRow]] valueForKey:@"ItemID"]; 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ItemID = %@", itemID]; 
[fetchRequest setPredicate:predicate]; 

NSError *error = nil; 
Item *objectToDelete = [[managedObjectContext executeFetchRequest:fetchRequest error:&error] objectAtIndex:0]; 
if (objectToDelete == nil) { 
    NSLog(@"ERROR"); 
} 

[fetchRequest release]; 

[objectToDelete setValue:[NSNumber numberWithBool:YES] forKey:@"Deleted"]; 

[managedObjectContext save:&error]; 

İçimden başarıyla farklı özelliklerini değiştirmek mümkün olmamdır; örneğin: Item'un Code ve Name özniteliklerinin sonuna -DEL dizesini ekliyorum. Bir veri tablosunu görüntülediğimde, bu değerlerin dizeleri karşılık gelen şekilde güncelleştirilir, ancak Deleted değeri 0 olmaya devam eder.

+0

Varlık tanımınız neye benziyor? Yerel tümleşik türleri kullanıyor musunuz? ValueForKey'i çağırdığınızda ne elde edersiniz? @ "Silindi" –

+0

Öğe için Benim Varlık üstbilgi dosyası NSNumber * Silindi. Çekirdek veri modelinde Boolean olarak listeleniyor. ValueForKey çağırdığımda: @ "Silindi" ed, "0" yazdırır. – Rail24

+0

Özniteliğiniz geçici olarak bildirildi mi? Ardından, güncellemeden önce ve sonra bir günlük ifadesi koymaya çalışın. Bilmeme izin ver. –

cevap

9

Bu özellik için farklı bir ad kullanmanızı şiddetle tavsiye ederim. NSManagedObject, bu adla (özellikle -isDeleted) yakından ilişkili yöntemlere sahiptir ve bu da özel öznitelik adınızla çakışmalara neden olabilir. NSPropertyDescription için the documentation olarak diyor ki: Bir özellik adı NSObject veya NSManagedObject herhangi hayır parametreli yöntem adıyla aynı olamaz

Not söyledi. Örneğin, yapamazsınız bir özellik adı "açıklama". NSObject'te NSObject üzerinde, özellik adlarıyla çakışabilecek yüzlerce yöntem vardır ve bu liste, çerçevelerden veya diğer kitaplıklardan uyarıda bulunmadan büyüyebilir. Sen ve kelime veya Kakao paradigmaların örtüşen ifadeler (örneğin, ‘isEditing’ olarak ve ‘objectSpecifier’) ("yazı” ve ‘renk’ gibi) çok genel kelimeleri kaçınmalıdır.

kodunuzu mu Mülkünüzün ismini başka bir özellik/yöntem isimleriyle çarpışmayacak bir şeye değiştirirseniz, çalışın

+0

Bu hile. "Silinmiş" özniteliğini "DeletedBoolean" olarak değiştirdim. Koddaki bir çift yansımalar ve şimdi mükemmel çalışıyor. Çok teşekkür ederim. – Rail24

+0

Bir saatten fazla "silindi" özelliğini neden "1" olarak ayarlayamadığımı anlamaya çalıştım, teşekkürler. – daleijn

İlgili konular