2011-07-07 14 views
5

के बजाय एनएसएआरआरएआर लौट रहा है किसी कारण से सभी एनएसएसटींग टाइप किए गए गुण मेरे आलेख ऑब्जेक्ट में एनएसएआरआरएएस के रूप में वापस लौटाए जा रहे हैं। उन्हें पुनर्प्राप्त करने के लिए मेरा कार्य यहां दिया गया है: कोर डेटा NSStrings

- (NSArray *)getSavedArticles 
{ 
    NSFetchRequest *fetchRequest = [[[NSFetchRequest alloc] init] autorelease]; 
    NSError *error = nil; 
    NSEntityDescription *entity = [NSEntityDescription 
            entityForName:@"Article" inManagedObjectContext:[self managedObjectContext]]; 
    [fetchRequest setEntity:entity]; 
    NSSortDescriptor *dateSort = [NSSortDescriptor sortDescriptorWithKey:@"last_opened" ascending:NO]; 
    [fetchRequest setSortDescriptors:[NSArray arrayWithObject:dateSort]]; 
    NSArray *fetchedObjects = [[self managedObjectContext] executeFetchRequest:fetchRequest error:&error]; 
    return fetchedObjects; 
}
मैंने इनके लिए एनएसएमएनेज्ड ऑब्जेक्ट मॉडल नहीं बनाया है, और इसके बजाय मैं केवल केवीओ का उपयोग करके उन्हें एक्सेस कर रहा हूं।

//self.data has the array returned from getSavedArticles 
NSManagedObject *object = [self.data objectAtIndex:indexPath.row]; 
NSString *path = [object valueForKey:@"path"]; 
NSString* id  = [object valueForKey:@"id"]; 

जब मैं चर फलक में इसे देखो, path और id पर मैं (__NSArrayI *) ... Variable is not a CFString. इनमें से किसी का वर्णन मुद्रण देख भी जब सरणियों मुद्रण इस्तेमाल किया कोष्ठक बाहर प्रिंट करता है।

मैं बस सोच रहा हूं कि यह सॉर्ट डिस्क्रिप्टर के कारण हो सकता है? मैंने दो बार जांच की है कि इन ऑब्जेक्ट्स में जा रहे डेटा को सही टाइप किया गया है, और SQLite डेटाबेस जो मैं बैकअप ले रहा हूं सब कुछ स्ट्रिंग प्रदर्शित कर रहा है।

मैंने सिम्युलेटर में ऐप को दोबारा स्थापित करने और इसे रीसेट करने का प्रयास किया है। मुझे अभी भी एनएसएसटींग के बजाय एनएसएआरएआरई मिलती है।

मुझे सच में नहीं पता कि यहां क्या हो रहा है। किसी भी सहायता की सराहना की जाएगी।

संपादित करें: मुझे बस कुछ और दिलचस्प मिला। मैं यह देखने के लिए एक और जांच करता हूं कि कोई आलेख सहेजा गया है या नहीं, और इस बार मुझे लेख पथ के लिए एनएसएआरएआर नहीं मिला:

- (NSString *)hasArticleSaved:(NSString *)id 
{ 
    NSString *path = nil; 
    NSFetchRequest *fetchRequest = [[[NSFetchRequest alloc] init] autorelease]; 
    [fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"%K == %@", @"id", id]]; 
    NSEntityDescription *entity = [NSEntityDescription 
            entityForName:@"Article" inManagedObjectContext:[self managedObjectContext]]; 
    [fetchRequest setEntity:entity]; 
    NSError *error = nil; 
    NSArray *fetchedObjects = [[self managedObjectContext] executeFetchRequest:fetchRequest error:&error]; 
    if (fetchedObjects.count > 0) { 
     NSManagedObject *savedArticle = [fetchedObjects objectAtIndex:0]; 
     path = [savedArticle valueForKey:@"path"]; 
    } 
    return path; 
}

अब मैं वास्तव में उलझन में हूं। कोई लेने वाला?

उत्तर

0

मुझे समस्या मिली। मैंने अपनी तालिका के लिए डेटा संरचना बदल दी है, इसलिए self.data arrays की एक सरणी है ... और केवल 1 ऑब्जेक्ट के साथ ऐसा लगता है कि मुझे एनएसएआरएआरई वापस मिल रहा था जब वास्तव में मैं डेटा को गलत तरीके से एक्सेस कर रहा था। मुझे बस [[self.data objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];

0

आपकी समस्या यहाँ है:

[self.data objectForKey:indexPath.row] 

... क्योंकि objectForKey: जैसे एक स्ट्रिंग कुंजी नाम की तलाश में है "पथ" या "आईडी"। इसे एक पूर्णांक देने से एक त्रुटि या यादृच्छिक वापसी होगी।

इसके बजाय, आप चाहते हैं:

[self.data objectAtIndex:indexPath.row] 

... सरणी में दिए गए इंडेक्स पर प्रबंधित वस्तु वापस आ जाएगी जो।

+0

व्हाउप्स करने की आवश्यकता है! यह सवाल में एक टाइपो है। मैं objectAtIndex का उपयोग कर रहा हूँ। अभी फिक्सिंग – MishieMoo

+0

हाँ, मैं सोच रहा था कि यह भी संकलित कैसे हुआ। – TechZen