2011-11-18 59 views
0

(因爲ARC的可能),我稱之爲下面的方法時,我的UITableView重載:故障與重新加載數據到的NSArray

-(NSArray *)theAccounts { 

    if (__theAccounts != nil) { 
     return __theAccounts; 
    } 

    // Create an account store object. 
    ACAccountStore *accountStore = [[ACAccountStore alloc] init]; 

    // Create an account type that ensures Twitter accounts are retrieved. 
    ACAccountType *accountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter]; 

    // Request access from the user to use their Twitter accounts. 
    [accountStore requestAccessToAccountsWithType:accountType withCompletionHandler:^(BOOL granted, NSError *error) { 
     if(granted) { 
      // Get the list of Twitter accounts. 
      NSArray *accountsArray = [[NSArray alloc] initWithArray:[accountStore accountsWithAccountType:accountType]]; 
      self.theAccounts = accountsArray; 
     } 
    }]; 

    return __theAccounts;   

} 

setter方法中.H:

@property (strong, nonatomic) NSArray *theAccounts; 

,並在。米:

@synthesize theAccounts = __theAccounts; 

我想能夠有效地清空self.theAccounts和重新加載。所以,我創建了一個重新同步的方法,但我重裝表後,永遠不會返回任何值:

-(void)resyncAccounts { 
    self.theAccounts = nil; 
    [self.tableView reloadData]; 
} 

我在iOS 5 SDK使用ARC。這可能是一個問題嗎?我之前用fetchedResultsController做過類似的事情,沒有問題,但那不是ARC。值得注意的是,它在第​​一次調用時會返回數據,然後返回__TheAccounts,直到我嘗試 - (void)resyncAccounts {}。

在吸氣
+0

你對「theAccounts」的setter方法是什麼樣的? –

+0

在 – mootymoots

回答

1

你爲什麼不重新加載的tableView在完成處理程序設置「theAccounts」之後?另外,將它設置爲零後不應該調用「self.theAccounts」嗎?

+0

self.theAccounts通過表重新加載方法調用: - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)部分 – mootymoots

+0

我建議你改變你的方法。首先,不要在numberOfRowsInsection上調用self.theAccounts方法。其次,將resyncAccounts方法中的AccountAccounts設置爲nil,然後調用self.theAccounts。執行self.theAccounts = accountsArray後,在完成處理程序上執行[self.tableView reloadData]。 – carlos

+0

謝謝,我實際上完全不同,但這很有幫助(特別是在塊中調用表重新加載)。 – mootymoots

0

,你正在返回零的第一時間,因爲該塊尚未執行

+0

之上添加了一個設置器 - 不行 - 第一次運行時返回正常。我添加了一些NSLog條目來檢查。 – mootymoots

+0

實際上,我認爲你可能會遇到某些事情。有時它有效,有時不會。我怎樣才能確保我在塊運行後返回吸氣劑? – mootymoots

+0

你不能......如果你從getter中調用requestAccessToAccountsWithType:。使用由Carlos Hernandez提出的方法 – javieralog