本文介绍了“收集2:1d返回1退出状态";错误的Iphone SDK.请帮我的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是新的Mac和iphone SDK.我基本上是写一个游戏应用程序.我想使用SQLite更新和显示游戏得分.

i am new Mac and iphone SDK.i writing basicly a game application. and i want to update and show game score using SQLite.

我在网上搜索了我的问题,但没有找到适合我的解决方案.错误是:

i searched in web for my problem but i didnt find any solution for me.error is:

Ld /Users/Iphone/Desktop/IDRGame/build/Debug-iphonesimulator/IDRGame.app/IDRGame normal i386
cd /Users/Iphone/Desktop/IDRGame
setenv MACOSX_DEPLOYMENT_TARGET 10.5
setenv PATH "/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.0 -arch i386 -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator2.2.1.sdk -L/Users/Iphone/Desktop/IDRGame/build/Debug-iphonesimulator -L/Users/Iphone/Desktop/IDRGame -L/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator2.2.1.sdk/System/Library/Frameworks/QuartzCore.framework -F/Users/Iphone/Desktop/IDRGame/build/Debug-iphonesimulator -F/Users/Iphone/Desktop/IDRGame -filelist /Users/Iphone/Desktop/IDRGame/build/IDRGame.build/Debug-iphonesimulator/IDRGame.build/Objects-normal/i386/IDRGame.LinkFileList -mmacosx-version-min=10.5 -framework Foundation -framework UIKit -framework CoreGraphics -framework AudioToolbox -lsqlite3.0 -o /Users/Iphone/Desktop/IDRGame/build/Debug-iphonesimulator/IDRGame.app/IDRGame
Undefined symbols:
".objc_class_name_ScoreDB", referenced from:
literal-pointer@__OBJC@__cls_refs@ScoreDB in IDRGameAppDelegate.o
literal-pointer@__OBJC@__cls_refs@ScoreDB in InterclockView.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

我有用于SQLite的ScoreDB.h和ScoreDB.m文件.ScoreDB.h文件

i have ScoreDB.h and ScoreDB.m files for SQLite.ScoreDB.h File

//
// ScoreDB.h
// SQLiteTutorial
//
// Created by Iphone App on 6/11/09.
// Copyright 2009 __MyCompanyName__. All rights reserved.
//
#import <UIKit/UIKit.h>
#import <sqlite3.h>

@interface ScoreDB : NSObject {
NSInteger *game_id;
NSString *name;
NSString *score;

BOOL hydrated;
BOOL dirty;
}

@property (nonatomic, readonly) NSInteger *game_id;
@property (nonatomic, copy) NSString *name;
@property (nonatomic, copy) NSString *score;
@property (nonatomic, readwrite) BOOL dirty;
@property (nonatomic, readwrite) BOOL hydrated;

- (id)initWithPrimaryKeyNSInteger)pk;
-(void)UpdateDatabase;
-(void)SelectDatabase;
+ (void) finalizeStatements;
@end

和ScoreDB.m

and ScoreDB.m

#import "ScoreDB.h"
static sqlite3 *database = nil;
static sqlite3_stmt *insert_statement = nil;
static sqlite3_stmt *init_statement = nil;
static sqlite3_stmt *delete_statement = nil;
static sqlite3_stmt *hydrate_statement = nil;
static sqlite3_stmt *dehydrate_statement = nil;
static sqlite3_stmt *update_statement = nil;

@implementation ScoreDB
@synthesize game_id,name,score,dirty,hydrated;

- (id)initWithPrimaryKeyNSInteger)pk{    
[super init];
game_id = pk;
return self;
}

// Finalize (delete) all of the SQLite compiled queries.
+ (void)finalizeStatements {
if (database) sqlite3_close(database);
if (insert_statement) {
sqlite3_finalize(insert_statement);
insert_statement = nil;
}
if (init_statement) {
sqlite3_finalize(init_statement);
init_statement = nil;
}
if (delete_statement) {
sqlite3_finalize(delete_statement);
delete_statement = nil;
}
if (hydrate_statement) {
sqlite3_finalize(hydrate_statement);
hydrate_statement = nil;
}
if (dehydrate_statement) {
sqlite3_finalize(dehydrate_statement);
dehydrate_statement = nil;
}

if (update_statement) {
sqlite3_finalize(update_statement);
update_statement = nil;
}
}

-(void)UpdateDatabase {
delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
[alert show];

if(update_statement == nil) {
const char *sql = "UPDATE game Set score = ? Where name = ?";
if(sqlite3_prepare_v2(database, sql, -1, &updateStmt, NULL) != SQLITE_OK)
NSAssert1(0, @"Error while creating update statement. '%s'",
          sqlite3_errmsg(database));
}

sqlite3_bind_text(update_statement, 1,
                 [name UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(update_statement, 2,
                 [score UTF8String], -1, SQLITE_TRANSIENT);
// sqlite3_bind_int(update_statement, 3, coffeeID);

if(SQLITE_DONE != sqlite3_step(update_statement))
NSAssert1(0, @"Error while updating. '%s'", sqlite3_errmsg(database));

sqlite3_reset(update_statement);

//Reclaim all memory here.
[score release];
score = nil;
[name release];
name = nil;

}

-(void)SelectDatabase {}

- (void) setGameNameNSString *)newValue {
[name release];
name = [newValue copy];
}

- (void) setGameScoreNSString *)newValue {
[score release];
score = [newNumber copy];
}

- (void)dealloc {
[name release];
[score release];
[super dealloc];
}
@end

我正在使用这些代码

IDRGameAppDelegate *appDelegate =
         (IDRGameAppDelegate *)[[UIApplication sharedApplication] delegate];


ScoreDB *dbObj = [[ScoreDB alloc] initWithPrimaryKey:0];
dbObj.name = @"reflex";
dbObj.score = @"0.345";

[appDelegate updateScore:dbObj];

当我关闭此行时:ScoreDB *dbObj = [[ScoreDB alloc] initWithPrimaryKey:0];错误消失了.我不明白什么是问题.请帮我.我的框架:

when i close this line : ScoreDB *dbObj = [[ScoreDB alloc] initWithPrimaryKey:0]; error is gone.what is problem i dont understand. please help me.my frameworks :

  • libsqlite3.0.dylib
  • AudioToolbox.framework
  • UIkit.framework
  • Foundation.framework
  • CoreGraphics.framework.

我希望你能帮助我.

谢谢大家.

推荐答案

您可能尚未将ScoreDB.m添加到当前目标.右键单击ScoreDB.m,选择获取信息",选择目标"选项卡,并确保它属于您正在构建的目标.

You probably have not added ScoreDB.m to the current target. Right-click ScoreDB.m, select "Get Info", select the "Targets" tab and make sure it's part of the target you're building.

这篇关于“收集2:1d返回1退出状态";错误的Iphone SDK.请帮我的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-20 01:17