2012-02-29 11 views
8

का उपयोग करने का प्रयास करते समय त्रुटि मुझे FMDatabase का उपयोग करने का प्रयास करते समय परेशानी हो रही है।SQLite wrapper FMDatabase

मैं जोड़ लिया है इन फ़ाइलों:

FMDatabaseQueue 
FMDatabaseAdditions 
FMDatabase 
FMResultSet 
FMDatabasePool 

..और मैं भी libsqlite3.dylib पुस्तकालय और आयातित FMDatabase.h जोड़ लिया है, लेकिन जैसे ही मैं इस लाइन uncomment के रूप में:

FMDatabase *db = [FMDatabase databaseWithPath:@"/tmp/tmp.db"]; 

..मैं इस त्रुटि मिलती है:

Undefined symbols for architecture i386: 
    "_OBJC_CLASS_$_FMDatabase", referenced from: 
     objc-class-ref in DBWrapper.o 
ld: symbol(s) not found for architecture i386 

मैं भी 4.0 के बीच तैनाती लक्ष्य की तरह की सेटिंग बदल की कोशिश की है - 5.0 और एक नई, स्वच्छ परियोजना, आदि बनाना

मैं एक्सकोड संस्करण 4.3 (4E109) ​​का उपयोग कर रहा हूं।

मैं क्या गलत कर रहा हूं? :)

// स्टीफन

+1

क्या आपने अपनी परियोजना में .h और .m फ़ाइलों को जोड़ा है? – lawicko

+1

हां, मैंने fmdb.m को छोड़कर src से सभी फाइलें जोड़ दी हैं। –

उत्तर

16

एक लिंकर त्रुटि अर्थ यही है, सब कुछ आप तंग आ संकलक ठीक था, लेकिन एक बार यह सब संकलित ऑब्जेक्ट कोड एक निष्पादन में एक साथ पैकेज समय आया यह एक वर्ग है कि संदर्भित किया गया था के लिए कार्यान्वयन नहीं मिल सका कोड में

एक्सकोड में प्रोजेक्ट स्रोत सूची में .m फ़ाइलों को खींचना स्वचालित रूप से उन्हें "बिल्ड चरण" में जोड़ना चाहिए, लेकिन यदि आपने ऐसा किया है और आपको यह त्रुटि मिल रही है, तो जांचें कि वे वहां हैं: शीर्ष पर क्लिक करें प्रोजेक्ट सेटिंग्स प्राप्त करने के लिए बाएं तरफ स्रोत सूची में -वेल आइटम, अगले फलक में लक्ष्य पर क्लिक करें, फलक में "चरण बनाएं" कॉलम हेडर पर क्लिक करें, फिर "संकलित स्रोत" पंक्ति का विस्तार करें। अगर एफएम फाइलें वहां नहीं हैं, तो सूची के नीचे + बटन पर क्लिक करें और उन्हें चुनें।

+0

आप सही थे, इसने मेरी समस्या हल की। धन्यवाद! –

+3

यह एक्सकोड 4.3 बीटीडब्ल्यू में बग है जो फाइलों को जोड़ने के दौरान "लक्ष्य में जोड़ें" चेकबॉक्स को अनचेक करता है। – valexa

+0

रॉकिन ', एक्सकोड पर रखें .. नोट के लिए धन्यवाद - मैं बिल्ड चरण से बाहर निकलने वाली फ़ाइलों के लिए नजर रखूंगा। – davehayden

1

आप जगह है कि आप उन्हें प्रयोग कर रहे हैं में FMDB हेडर आयातित है?

#import "FMDatabase.h" 
+0

हां। मैं अपने डेटाबेस वैरिएबल को इस तरह परिभाषित कर सकता हूं: एफएमडीबेस * डीबी; और यह काम करता है। जैसे ही मैं असम्बद्धता करता हूं [एफएमडेटाबेस डेटाबेसविथपाथ: @ "/ tmp/tmp.db"]; –

2

davehayden के जवाब पर विस्तार ...

आप Xcode में शीर्ष लेख और स्रोत फ़ाइलों का एक फ़ोल्डर में जोड़ते हैं, .m फ़ाइलों को संकलित सूत्रों का कहना है सूची में नहीं जोड़ा गया है। मैं आमतौर पर यहां पकड़ा जाता हूं क्योंकि मैं अपने प्रोजेक्ट फ़ोल्डर में एक समझदार फ़ोल्डर संरचना को बनाए रखना चाहता हूं। इसके आस-पास पहुंचने के लिए, मैं मैन्युअल रूप से फ़ाइलों को अपने प्रोजेक्ट फ़ोल्डर में कॉपी करता हूं जहां मैं उन्हें चाहता हूं। फिर एक्सकोड में, प्रतिलिपि के बिना मेरे प्रोजेक्ट में प्रत्येक व्यक्तिगत शीर्षलेख और स्रोत फ़ाइल जोड़ें (फ़ाइल का उपयोग करके> फ़ाइलें जोड़ें ...)। प्रोजेक्ट नेविगेटर में सभी ढीली फाइलों का चयन करें, राइट क्लिक करें, और चयन से फ़ोल्डर बनाएं।

थोड़ा देर हो चुकी है, लेकिन मुझे उम्मीद है कि यह किसी और की मदद करेगा।