Problemer med "incomplete implementation"

Problemer med "incomplete implementation"

Innleggav Dinael » søn 15.05.2011 22:44

Hei!

Driver å prøver meg litt fram i Xcode og får en feilmelding i gul trekant som sier; "Incomplete implementation". Lurte på om noen hadde noe tips om hva som kan være galt? Spør hvis det er noe annet om koden man trenger.

Takk!

Brukerens avatar
medlem i 163 måneder
 

Re: Problemer med "incomplete implementation"

Innleggav Larsaronen » man 16.05.2011 8:21

Får du ingen mer informasjon en det? Ikke vis du trykker på feilmeldingen engang?

Sannsynligvis er det noe som .h filen beskriver at .m filen skal inneholde men ikke gjør det..

Få se .h filen så kan jeg spørre om du har lagt det du må i .m filen..
medlem i 204 måneder
 

Re: Problemer med "incomplete implementation"

Innleggav Dinael » man 16.05.2011 9:25

Får ikke annen melding enn "incomplete implementation of class CityGuideDelegate"

Her er .h-filen ;)

#import <UIKit/UIKit.h>

@class RootController;

@interface CityGuideDelegate:NSObject <UIApplicationDelegate> {
UIWindow *window;
RootController *viewController;
NSMutableArray *cities;
UINavigationController *navController;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet RootController *viewController;
@property (nonatomic, retain) IBOutlet UINavigationController *navController;
@property (nonatomic, retain) NSMutableArray *cities;

-(NSString *)copyDatabaseToDocuments;
-(void)readCitiesFromDatabaseWithPath:(NSString *)filePath;

@end


Jeg får også beskjed i .m-filen at readCitiesFromDatabaseWithPath er undeclared identifier. Mistenker det kanskje har noe med den å gjøre. Det er vel også etter jeg la til de to siste linjene (NSString og void) før @end at jeg fikk opp feilmeldingen.

Takk for svar ;)

Brukerens avatar
medlem i 163 måneder
 

Re: Problemer med "incomplete implementation"

Innleggav Larsaronen » man 16.05.2011 10:11

Da høres det ut som at du ikke har noen metode for readCitiesFromDatabaseWithPath i din .m fil..

Har du dette i filen din:

-(void)readCitiesFromDatabaseWithPath:(NSString *)filePath {
//Kode her..
}

Og hvis du har det, er det skrevet helt rett?
medlem i 204 måneder
 

Re: Problemer med "incomplete implementation"

Innleggav Dinael » man 16.05.2011 10:59

Har skrevet det i .m og det er der jeg får feilmeldingen undeclared identifier. Så det virker som at .m ikke ser at jeg har declaret den i .h p.g.a. implementationfeilen?

Legger ved hele koden for sikkerhets skyld ;)

-(void)readCitiesFromDatabaseWithPath:(NSString *)filePath {

sqlite3 *database;

if(sqlite3_open([filePath UTF8String], &database) == SQLITE_OK) {
const char *sqlStatement = "select * cities";
sqlite3_stmt *compiledStatement;
if(sqlite3_prepare_v2(database, sqlStatement,
-1, &compiledStatement, NULL) ==SQLITE_OK) {
while(sqlite3_step(compiledStatement) == SQLITE_ROW) {

NSString *cityName =
[NSString stringWithUTF8String:(char *)
sqlite3_column_text(compiledStatement, 1)];
NSString *cityDescription =
[NSString stringWithUTF8String:(char *)
sqlite3_column_text(compiledStatement, 2 )];

NSData *cityData = [[NSData alloc]
initWithBytes:sqlite3_column_blob(compiledStatement, 3)
length: sqlite3_column_bytes(compiledStatement, 3)];
UIImage *cityImage = [UIImage imageWithData:cityData];

City *newCity = [[City alloc] init];
newCity.cityName = cityName;
newCity.cityDescription = cityDescription;
newCity.cityPicture = (UIImage *)cityImage;

[self.cities addObject:newCIty];
[newCity release];
}
}
sqlite3_finalize(compiledStatement);
}
sqlite3_close(database);
}

Brukerens avatar
medlem i 163 måneder
 

Re: Problemer med "incomplete implementation"

Innleggav Larsaronen » man 16.05.2011 11:57

Kan ikke se noe feil med det..

Hvis du kan legge ut hele .h og .m så finner vi sikkert ut av det.. Om du vil dele koden da..
medlem i 204 måneder
 

Re: Problemer med "incomplete implementation"

Innleggav Dinael » man 16.05.2011 12:09

Har ikke så mye imot å dele koden, den er fra en bok så jeg eier den ikke ;)

CityGuideDelegate.h er

#import <UIKit/UIKit.h>

@class RootController;

@interface CityGuideDelegate:NSObject <UIApplicationDelegate> {
UIWindow *window;
RootController *viewController;
NSMutableArray *cities;
UINavigationController *navController;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet RootController *viewController;
@property (nonatomic, retain) IBOutlet UINavigationController *navController;
@property (nonatomic, retain) NSMutableArray *cities;

-(NSString *)copyDatabaseToDocuments;
-(void)readCitiesFromDatabaseWithPath:(NSString *)filePath;

@end


CityGuideDelegate.m er


#include "sqlite3.h"

#import "CityGuideDelegate.h"
#import "RootController.h"
#import "city.h"

@implementation CityGuideDelegate

@synthesize window;
@synthesize viewController;
@synthesize cities;
@synthesize navController;


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

cities = [[NSMutableArray alloc] init];
NSString *filePath = [self copyDatabaseToDocuments];
[self readCitiesFromDatabaseWithPath:filePath];

navController.viewControllers = [NSArray arrayWithObject:viewController];
[window addSubview:navController.view];
[window makeKeyAndVisible];

}


- (void)dealloc {
[viewController release];
[window release];
[cities release];
[super dealloc];

}
-(NSString *)copyDatabaseToDocuments {
NSFileManager *fileManager = [NSFileManager defaultManager];
NSArray *paths =
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsPath = [paths objectAtIndex:0];
NSString *filePath = [documentsPath
stringByAppendingPathComponent:@"cities.sqlite"];

if ( ![fileManager fileExistsAtPath:filePath] ) {
NSString *bundlePath = [[[NSBundle mainBundle] resourcePath]
stringByAppendingPathComponent:@"cities.sqlite"];
[fileManager copyItemAtPath:bundlePath toPath:filePath error:nil];
}

-(void)readCitiesFromDatabaseWithPath:(NSString *)filePath {

sqlite3 *database;

if(sqlite3_open([filePath UTF8String], &database) == SQLITE_OK) {
const char *sqlStatement = "select * cities";
sqlite3_stmt *compiledStatement;
if(sqlite3_prepare_v2(database, sqlStatement,
-1, &compiledStatement, NULL) ==SQLITE_OK) {
while(sqlite3_step(compiledStatement) == SQLITE_ROW) {

NSString *cityName =
[NSString stringWithUTF8String:(char *)
sqlite3_column_text(compiledStatement, 1)];
NSString *cityDescription =
[NSString stringWithUTF8String:(char *)
sqlite3_column_text(compiledStatement, 2 )];

NSData *cityData = [[NSData alloc]
initWithBytes:sqlite3_column_blob(compiledStatement, 3)
length: sqlite3_column_bytes(compiledStatement, 3)];
UIImage *cityImage = [UIImage imageWithData:cityData];

City *newCity = [[City alloc] init];
newCity.cityName = cityName;
newCity.cityDescription = cityDescription;
newCity.cityPicture = (UIImage *)cityImage;

[self.cities addObject:newCIty];
[newCity release];
}
}
sqlite3_finalize(compiledStatement);
}
sqlite3_close(database);
}



@end

Takk for at du tar deg tid ;)

Brukerens avatar
medlem i 163 måneder
 

Re: Problemer med "incomplete implementation"

Innleggav Larsaronen » man 16.05.2011 18:12

Bare hyggelig! Veit hvor frustrerende sånne feil kan være.. Neste gang er det kanskje jeg som trenger hjelp!

Det ser ut som at du mangler en curly bracket (}) på slutten av copyDatabaseToDocuments metoden!

Det er derfor du får beskjeden incomplete implementation.. readCitiesFromDatabaseWithPath "forsvinner" inn under copyDatabaseToDocuments og Xcode tror at den ikke er med i implementation filen..
medlem i 204 måneder
 

Re: Problemer med "incomplete implementation"

Innleggav Dinael » man 16.05.2011 18:26

Da ordnet det seg!

Tusen takk for hjelpen ;)

Brukerens avatar
medlem i 163 måneder
 


Returner til Programmering



Hvem er i Forumene

Registrerte brukere: Google [Bot]