это произошло с перебоями
Проверьте мой код и сравните результат печати
возможно, кто-то может знать, что не так с моим кодом ...
1.Я загружаю данные из списка URL-адресов
- (void)viewDidLoad {
NSURLRequest *theRequest=[NSURLRequestrequestWithURL:[NSURLURLWithString:@"http://www.envolab.com/envotouch/ios_status_req_test.php"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60.0];
NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
NSData *returnData = [NSURLConnection sendSynchronousRequest:theRequest returningResponse:nil error:nil];
NSString *listFile = [[NSString alloc] initWithData:returnData encoding:NSASCIIStringEncoding];
plist = [listFile propertyList];
}
чем я распечатаю результат, чтобы проверить правильность данных или нет
адрес правильный, я вижу plist-файл в Safari или IE
2. есть результат:
plist is :::::>
(
{
category = Light;
nodeID = 1;
nodeName = "Living Room";
nodeStatus = 0;
nodeTrigger = 0;
nodeType = "light_sw";
},
{
category = Light;
nodeID = 2;
nodeName = Kitchen;
nodeStatus = 0;
nodeTrigger = 0;
nodeType = "light_sw";
},
{
category = Light;
nodeID = 3;
nodeName = Bedroom;
nodeStatus = 1;
nodeTrigger = 0;
nodeType = "light_sw";
}
)
ОК, этот результат соответствует файлу plist, который я создаю
Я хочу отобразить некоторые элементы в табличном представлении
3. Далее я определяю, сколько строк мне нужно
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [plist count];
}
General, вернется 3
4. чем я устанавливаю данные, которые я читаю с URL, и устанавливаю в свои ячейки tableView
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"LightCell";
LightCell0 *cell =(LightCell0 *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[LightCell0 alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}
int i;
for (i=0; i<[plist count]; i++) {
//Get "nodeNAme"
if(indexPath.row == i){
cell.lightLocation.text = [[[plist objectAtIndex:i] valueForKey: @"nodeName"]description];
//Determine each row's pic is Light On/Off from "nodeStatus"
if ([[[plist objectAtIndex:i] valueForKey: @"nodeStatus"] intValue] == 0){
cell.lightImageView.image = [UIImage imageNamed:@"lightOff.png"];
}
else if([[[plist objectAtIndex:i] valueForKey: @"nodeStatus"] intValue] == 1){
cell.lightImageView.image = [UIImage imageNamed:@"lightOn.png"];
cell.lightSwitch.on=YES;
}
}
}
return cell;
}
Build & Run -> Успешно без предупреждения
Я также получил результат, как мне кажется, изображение соответствует состоянию переключателя
Если для nodeStatus задано значение 0 = выключен свет
иначе это будет свет на
и количество строк 3
BUTTTTTTTTTTTTT !!!!!
Когда я прокручиваю вид вниз, он вылетает без какого-либо сообщения
иногда этого не произойдет, например, когда вы наверху таблицы
вы пытаетесь "прокрутить вверх", он автоматически прокручивает вид вниз
когда я пытаюсь прокрутить вниз, я думаю, что он вернется автоматически
но это не так!?!
Я печатаю строку, которую я создаю, она отображается так
Now you see me tableView Row Count
TOTAL PLIST ROW COUNT IS = 3
Now you see me Load Data 0
Now you see me Load Data 1
Now you see me Load Data 2
выглядит хорошо, но я замечаю одну необычную вещь
каждый раз, когда я прокручиваю вниз, случайно появится еще одна строка
Now you see me Load Data 0
Now you see me Load Data 1
Now you see me Load Data 2
Now you see me Load Data 0,1,2(<-This line appear randomly with the number)
В режиме консоли вы видите только «Отладка прервана»
Но иногда появляется сообщение об ошибке:
-[__NSCFTimer count]: unrecognized selector sent to instance 0xbb00af0
2010-09-07 00:45:04.168 EnvoTouchDemo[3803:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason:
'-[__NSCFTimer count]: unrecognized selector sent to instance 0xbb00af0'
terminate called after throwing an instance of 'NSException'
Я удаляю программу в симуляторе и перестраиваю снова, она выглядит отлично
но запустить через несколько раз, снова сбой ... и с разумом ???
Я думаю, что моя логика верна .... но крушение действительно раздражает меня ...
спасибо, что прочитал мои проблемы
надеюсь, что кто-то может решить эту проблему!