J'ai besoin d'aide ici, donc je ferai de mon mieux pour expliquer. Je travaille sur toute la journée et n'a pas eu de succès (seulement à apprendre!)Problème de portée variable, iPhone
Je:
NSArray *getValue(NSString *iosearch)
{
mach_port_t masterPort;
CFTypeID propID = (CFTypeID) NULL;
unsigned int bufSize;
kern_return_t kr = IOMasterPort(MACH_PORT_NULL, &masterPort);
if (kr != noErr) return nil;
io_registry_entry_t entry = IORegistryGetRootEntry(masterPort);
if (entry == MACH_PORT_NULL) return nil;
CFTypeRef prop = IORegistryEntrySearchCFProperty(entry, kIODeviceTreePlane, (CFStringRef) iosearch, nil, kIORegistryIterateRecursively);
if (!prop) return nil;
propID = CFGetTypeID(prop);
if (!(propID == CFDataGetTypeID()))
{
mach_port_deallocate(mach_task_self(), masterPort);
return nil;
}
CFDataRef propData = (CFDataRef) prop;
if (!propData) return nil;
bufSize = CFDataGetLength(propData);
if (!bufSize) return nil;
NSString *p1 = [[[NSString alloc] initWithBytes:CFDataGetBytePtr(propData) length:bufSize encoding:1] autorelease];
mach_port_deallocate(mach_task_self(), masterPort);
return [p1 componentsSeparatedByString:@"\0"];
}
- (NSString *) serialnumber
{
NSArray *results = getValue(@"serial-number");
if (results) return [results objectAtIndex:0];
return nil;
}
- (NSString *) backlightlevel
{
NSArray *results = getValue(@"backlight-level");
if (results) return [results objectAtIndex:0];
return nil;
}
J'ai un tableView mis en place et que vous souhaitez afficher mon tableau dans si je puis:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {.............
.........................................................
cell.text = [results objectAtIndex:indexPath.row]; // error results undeclared here
return cell;
}
Dans mon fichier .H J'ai:
@interface UIDevice_IOKitExtensionsViewController : UIViewController {
IBOutlet UITableView *tblSimpleTable;
NSArray *results;
}
@property (nonatomic, retain) NSArray *results;
- (NSString *) serialnumber;
- (NSString *) backlightlevel;
Le problème est que j'obtenir des résultats non déclarés comme indiqué ci-dessus. Je ne peux pas non plus comprendre comment je pourrais obtenir le numéro de série et le niveau de rétroéclairage à afficher sur le clic d'un bouton ou même au chargement. Mes tentatives ont renvoyé des erreurs comme error: 'serialnumber' non déclaré (première utilisation dans cette fonction) et des avertissements comme warning: 'return' avec une valeur, dans la fonction return void. Désolé pour la longue question!
Un grand merci, Stuart
Il est déclaré dans mon fichier .h que NSArray * Les résultats – Stumf
Lorsque vous définissez-il? Si elle est déclarée comme ivar, elle ne vous donnera pas une erreur de compilation "résultats non déclarés", mais un résultat "résultats indéfinis" ou "non définis" ou quelque chose comme cette erreur au moment de l'exécution. Lequel obtenez-vous? –
C'était non déclaré, mais cela est maintenant trié. Lorsque je mets la scène d'affichage ou l'une des deux méthodes NString dans viewDidLoad ou dans un boutonClick, je suis à nouveau "non déclaré". Je fais probablement une erreur de base ou je comprends mal un concept. – Stumf