سؤال

في مندوب التطبيق، قمت بإنشاء صفيف لوحدات تحكم مريحة متعددة للإشارة. ومع ذلك، عندما أحاول تحديث الصفيف في طريقة عرض واحدة، فإنه يأتي فارغا في الآخر.

عرض 1:

MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
dataTempForSearch = appDelegate.myData;

ثم لدي محلل XML يدرج كائنا في الصفيف.

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
    if ([elementName isEqualToString:@"CompanyName"]) {
        // save values to an item, then store that item into the array...
        [item setObject:currentTitle forKey:@"title"];
        [item setObject:currentAddress forKey:@"address"];
        [item setObject:currentCity forKey:@"city"];
        [item setObject:currentCountry forKey:@"country"];

        [dataTempForSearch addObject:[item copy]];
    }
}

هذا إرجاع كل شيء على ما يرام في الرأي 1، ولكن في العرض 2 لدي:

- (void)viewDidLoad {
    MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
    dataTempForMap = appDelegate.myData;

    NSLog(@"myData appDelegate from: %@", dataTempForMap);      
}

عندما يتم تحميل هذه الرأي الثاني، dataTempForMap إرجاع صفيف فارغ.

هل كانت مفيدة؟

المحلول

من الممكن أن تقوم بإعادة تهيئة الصفيف على المرء الأصلي المكتظ بالسكان. سأضع نقطة توقف في المكان الذي تقوم به

MyData = [[nsmutablerray alloc] init]؛
ومعرفة ما إذا كان يتم استدعائه في كثير من الأحيان ثم فكرت.

نصائح أخرى

أظن أنك لم تتم تهيئة صفيف MyData في المندوب. يجب أن تكون الاتصال

[[NSMutableArray alloc]init];  

في الخاص بك

- (void)applicationDidFinishLaunching:(UIApplication *)application {

طريقة. وإلا فإن المؤشر الذي تعود إليه من المفوض لا يشير إلى مثيل NSMutablerray

ثم أتحقق من مصحح الأخطاء التي لا تحصل عليها مرة أخرى وأنك تحصل على نفس العنوان. إذا كان أي من هذه غير صحيح، أظن أن الأمر الذي يحدث فيه الأمور هو المشكلة

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