/ / NSMutableArray हर अंतिम समय में केवल उद्देश्य-सी, ios, कोको-टच देता है

एनएसएमयूटेबलएरे हर समय केवल अंतिम ऑब्जेक्ट देता है - उद्देश्य-सी, आईओएस, कोको-टच

मैं एक एप्लिकेशन विकसित कर रहा हूं। डेटाबेस डेटा संग्रहीत करने के लिए NSMutableArray का उपयोग करते हुए उस iam में। डेटाबेस से डेटा इस सरणी में प्राप्त करने के बाद। मैं उस डेटा पर खोज ऑपरेशन कर रहा हूं। उस समय में हर बार सरणी केवल अंतिम ऑब्जेक्ट देता है। लेकिन डेटाबेस से डेटा को पुनर्प्राप्त करने के समय यह विभिन्न डेटा को पुनः प्राप्त करता है। तो कृपया मुझे बताएं कि इसे कैसे हल किया जाए। मेरे कोड का हिस्सा नीचे दिखाया गया है।

 -(void)searchData
{
list=[db getlanguages];

for(for i=0;i<[list count];i++) {
databasefields *dbfield = [list objectAtIndex:i];
NSLog(@"%@",dbfield.lang);
}


}

इस कोड सूची में NSMutableArray है। मैं उस एक के लिए मेमोरी असाइन करूंगा। और उस एक के लिए संपत्ति को सेंट।

और [db getlanguages] के लिए कोड नीचे है।

 -(NSMutableArray*)getlanguages
{
NSString *query = [NSString stringWithFormat:@"SELECT * FROM A"];
sqlite3_stmt *stStatement;
NSMutableArray *getdata = [[NSMutableArray alloc]init];
if(sqlite3_prepare_v2(dbfile, [query UTF8String], -1, &stStatement, nil)==SQLITE_OK)
{
databasefields *dbfields=[[databasefields alloc]init];
while (sqlite3_step(stStatement)==SQLITE_ROW)
{
dbfields.num=sqlite3_column_int(stStatement, 0);
dbfields.lang=[NSString stringWithUTF8String:(char*)sqlite3_column_text(stStatement, 1)];
[getdata addObject:dbfields];
[dbfields release];
}

if (stStatement!= nil) {
sqlite3_finalize(stStatement);
}
}

sqlite3_close(dbfile);
return getdata;
}

उत्तर:

जवाब के लिए 3 № 1

निम्न पंक्ति को संशोधित करें

 for(for i=0;i<[list count];i++) {

सेवा मेरे

 for(int i=0;i<[list count];i++) {

और कोशिश।

संपादित करें

आप एक ही वस्तु का उपयोग कर रहे हैं और आप इसे भी जारी कर रहे हैं।

अपने बयान इस प्रकार हैं:

if(sqlite3_prepare_v2(dbfile, [query UTF8String], -1, &stStatement, nil)==SQLITE_OK)
{
databasefields *dbfields = nil;
while (sqlite3_step(stStatement)==SQLITE_ROW)
{
dbfields = [[databasefields alloc]init];
dbfields.num=sqlite3_column_int(stStatement, 0);
dbfields.lang=[NSString stringWithUTF8String:(char*)sqlite3_column_text(stStatement, 1)];
[getdata addObject:dbfields];
[dbfields release];
}

if (stStatement!= nil) {
sqlite3_finalize(stStatement);
}
}

उत्तर № 2 के लिए 1
for(for i =0 ?

आप एक पाश में दो डाल रहे हैं?

for i होना चाहिए int i


जवाब के लिए 0 № 3

इसे इस्तेमाल करे:

-(void)searchData {

for(databasefields *dbfield in [db getlanguages]) {
NSLog(@"%@",dbfield.lang);
}
}

यदि वह आपके सरणी में सभी आइटम्स को पुनरावृत्त नहीं करता है, तो आपको यह जांचने की आवश्यकता होगी कि क्या सरणी में डाला जा रहा है [db getlanguages]।

देखने के लिए चीजें:

  • हर बार एक ही वस्तु जोड़ना
  • सही सरणी नहीं लौट रहा है

आपके कोड को देखे बिना, यह अनुमान लगाना कठिन है कि आपकी समस्या क्या हो सकती है। शायद उस में से कुछ को जोड़ें, और मैं इस उत्तर को अपडेट कर सकता हूं।