Это случилось с перерывами
Проверьте мой код и сравните результат печати
может кто-нибудь знает, что не так с моим кодом...
1. Я загружаю данные plist с 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];
}
Генерал, он вернет 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;
}
Сборка и запуск -> Успешно без предупреждения
Я также получил результат, как я думаю, изображение соответствует статусу переключателя
Если nodeStatus равен 0 = свет выключен
другое это будет свет на
и количество строк равно 3
БУТТТТТТТТТТТ !!!!!
Когда я прокручиваю вид вниз, он вылетает без каких-либо сообщений
иногда этого не происходит, например, когда вы находитесь в верхней части таблицы
вы пытаетесь «прокрутить вверх», он автоматически прокручивает вид вниз
когда я пытаюсь прокрутить вниз, я думаю, что он вернется автоматически
но это не так!?!
Я печатаю созданную строку, она отображается так
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'
Я удаляю программу в симуляторе и снова пересобираю, все выглядит нормально
но запустив несколько раз, он снова сбой ... и с причиной ???
Я думаю, что моя логика верна .... но авария меня действительно раздражает ....
спасибо, что прочитали мои проблемы
надеюсь, что кто-то может понять эту проблему!