0

ユーザーが電子メールと電話番号で連絡先を作成するのに役立つ簡単な連絡先アプリを作成しました。現在、テーブルから約 100 の連絡先を追加しようとしています。したがって、各列のタイトルを読み取り、それに応じてテキスト ファイルからデータを取得し、それを xcode の関数にフィードできるようにする必要があります。これらは、私のファイル、contacts.txt の連絡先テーブルの見出しです。

Emp_ID   Name   Email   Contact_Number

これを達成するためのさまざまな方法は何ですか?

これらの見出しを含む表がテキスト ファイル contact.txt に保存されています。いいえ、データベースと SQL です。

これは私のContacts.txtファイルがxcodeでどのように見えるかのサンプルです

\itap1\trowd \taflags1 \trgaph108\trleft-108 \trcbpat3 \tamart320 \tamarb320 \trmarr320 \trbrdrt\brdrs\brdrw20\brdrcf2 \trbrdrl\brdrs\brdrw20\brdrcf2 \trbrdrr\brdrs\brdrw20\brdrcf2 
\clvertalc \clshdrawnil \clwWidth360\clftsWidth3 \clbrdrt\brdrs\brdrw20\brdrcf2 \clbrdrl\brdrs\brdrw20\brdrcf2 \clbrdrb\brdrs\brdrw20\brdrcf2 \clbrdrr\brdrs\brdrw20\brdrcf2 \clpadt60 \clpadl60 \clpadb60 \clpadr60 \gaph\cellx1728
\clvertalc \clshdrawnil \clwWidth1580\clftsWidth3 \clbrdrt\brdrs\brdrw20\brdrcf2 \clbrdrl\brdrs\brdrw20\brdrcf2 \clbrdrb\brdrs\brdrw20\brdrcf2 \clbrdrr\brdrs\brdrw20\brdrcf2 \clpadt60 \clpadl60 \clpadb60 \clpadr60 \gaph\cellx3456
\clvertalc \clshdrawnil \clwWidth3180\clftsWidth3 \clbrdrt\brdrs\brdrw20\brdrcf2 \clbrdrl\brdrs\brdrw20\brdrcf2 \clbrdrb\brdrs\brdrw20\brdrcf2 \clbrdrr\brdrs\brdrw20\brdrcf2 \clpadt60 \clpadl60 \clpadb60 \clpadr60 \gaph\cellx5184
\clvertalc \clshdrawnil \clwWidth6020\clftsWidth3 \clbrdrt\brdrs\brdrw20\brdrcf2 \clbrdrl\brdrs\brdrw20\brdrcf2 \clbrdrb\brdrs\brdrw20\brdrcf2 \clbrdrr\brdrs\brdrw20\brdrcf2 \clpadt60 \clpadl60 \clpadb60 \clpadr60 \gaph\cellx6912
\clvertalc \clshdrawnil \clwWidth3200\clftsWidth3 \clbrdrt\brdrs\brdrw20\brdrcf2 \clbrdrl\brdrs\brdrw20\brdrcf2 \clbrdrb\brdrs\brdrw20\brdrcf2 \clbrdrr\brdrs\brdrw20\brdrcf2 \clpadt60 \clpadl60 \clpadb60 \clpadr60 \gaph\cellx8640
\pard\intbl\itap1\pardeftab720\sl480

\f0\b\fs32 \cf0 #
\b0 \cell 
\pard\intbl\itap1\pardeftab720\sl480

\b \cf0 Emp_ID
\b0 \cell 
\pard\intbl\itap1\pardeftab720\sl480

\b \cf0 Name
\b0 \cell 
\pard\intbl\itap1\pardeftab720\sl480

\b \cf0 Email
\b0 \cell 
\pard\intbl\itap1\pardeftab720\sl480

\b \cf0 Contact_Number
\b0 \cell \row

\itap1\trowd \taflags1 \trgaph108\trleft-108 \trcbpat3 \tamart320 \tamarb320 \trmarr320 \trbrdrl\brdrs\brdrw20\brdrcf2 \trbrdrr\brdrs\brdrw20\brdrcf2 
\clvertalc \clshdrawnil \clwWidth360\clftsWidth3 \clbrdrt\brdrs\brdrw20\brdrcf2 \clbrdrl\brdrs\brdrw20\brdrcf2 \clbrdrb\brdrs\brdrw20\brdrcf2 \clbrdrr\brdrs\brdrw20\brdrcf2 \clpadt60 \clpadl60 \clpadb60 \clpadr60 \gaph\cellx1728
\clvertalc \clshdrawnil \clwWidth1580\clftsWidth3 \clbrdrt\brdrs\brdrw20\brdrcf2 \clbrdrl\brdrs\brdrw20\brdrcf2 \clbrdrb\brdrs\brdrw20\brdrcf2 \clbrdrr\brdrs\brdrw20\brdrcf2 \clpadt60 \clpadl60 \clpadb60 \clpadr60 \gaph\cellx3456
\clvertalc \clshdrawnil \clwWidth3180\clftsWidth3 \clbrdrt\brdrs\brdrw20\brdrcf2 \clbrdrl\brdrs\brdrw20\brdrcf2 \clbrdrb\brdrs\brdrw20\brdrcf2 \clbrdrr\brdrs\brdrw20\brdrcf2 \clpadt60 \clpadl60 \clpadb60 \clpadr60 \gaph\cellx5184
\clvertalc \clshdrawnil \clwWidth6020\clftsWidth3 \clbrdrt\brdrs\brdrw20\brdrcf2 \clbrdrl\brdrs\brdrw20\brdrcf2 \clbrdrb\brdrs\brdrw20\brdrcf2 \clbrdrr\brdrs\brdrw20\brdrcf2 \clpadt60 \clpadl60 \clpadb60 \clpadr60 \gaph\cellx6912
\clvertalc \clshdrawnil \clwWidth3200\clftsWidth3 \clbrdrt\brdrs\brdrw20\brdrcf2 \clbrdrl\brdrs\brdrw20\brdrcf2 \clbrdrb\brdrs\brdrw20\brdrcf2 \clbrdrr\brdrs\brdrw20\brdrcf2 \clpadt60 \clpadl60 \clpadb60 \clpadr60 \gaph\cellx8640
\pard\intbl\itap1\pardeftab720\sl480
\cf0 1\cell 
\pard\intbl\itap1\pardeftab720\sl480
\cf0 Emp1000\cell 
\pard\intbl\itap1\pardeftab720\sl480
\cf0 Name1\cell 
\pard\intbl\itap1\pardeftab720\sl480
\cf0 name1@gmail.com\cell 
\pard\intbl\itap1\pardeftab720\sl480
\cf0 9874563210\cell \row

\itap1\trowd \taflags1 \trgaph108\trleft-108 \trcbpat3 \tamart320 \tamarb320 \trmarr320 \trbrdrl\brdrs\brdrw20\brdrcf2 \trbrdrr\brdrs\brdrw20\brdrcf2 
\clvertalc \clshdrawnil \clwWidth360\clftsWidth3 \clbrdrt\brdrs\brdrw20\brdrcf2 \clbrdrl\brdrs\brdrw20\brdrcf2 \clbrdrb\brdrs\brdrw20\brdrcf2 \clbrdrr\brdrs\brdrw20\brdrcf2 \clpadt60 \clpadl60 \clpadb60 \clpadr60 \gaph\cellx1728
\clvertalc \clshdrawnil \clwWidth1580\clftsWidth3 \clbrdrt\brdrs\brdrw20\brdrcf2 \clbrdrl\brdrs\brdrw20\brdrcf2 \clbrdrb\brdrs\brdrw20\brdrcf2 \clbrdrr\brdrs\brdrw20\brdrcf2 \clpadt60 \clpadl60 \clpadb60 \clpadr60 \gaph\cellx3456
\clvertalc \clshdrawnil \clwWidth3180\clftsWidth3 \clbrdrt\brdrs\brdrw20\brdrcf2 \clbrdrl\brdrs\brdrw20\brdrcf2 \clbrdrb\brdrs\brdrw20\brdrcf2 \clbrdrr\brdrs\brdrw20\brdrcf2 \clpadt60 \clpadl60 \clpadb60 \clpadr60 \gaph\cellx5184
\clvertalc \clshdrawnil \clwWidth6020\clftsWidth3 \clbrdrt\brdrs\brdrw20\brdrcf2 \clbrdrl\brdrs\brdrw20\brdrcf2 \clbrdrb\brdrs\brdrw20\brdrcf2 \clbrdrr\brdrs\brdrw20\brdrcf2 \clpadt60 \clpadl60 \clpadb60 \clpadr60 \gaph\cellx6912
\clvertalc \clshdrawnil \clwWidth3200\clftsWidth3 \clbrdrt\brdrs\brdrw20\brdrcf2 \clbrdrl\brdrs\brdrw20\brdrcf2 \clbrdrb\brdrs\brdrw20\brdrcf2 \clbrdrr\brdrs\brdrw20\brdrcf2 \clpadt60 \clpadl60 \clpadb60 \clpadr60 \gaph\cellx8640
\pard\intbl\itap1\pardeftab720\sl480
\cf0 2\cell 
\pard\intbl\itap1\pardeftab720\sl480
\cf0 Emp1010\cell 
\pard\intbl\itap1\pardeftab720\sl480
\cf0 Name2\cell 
\pard\intbl\itap1\pardeftab720\sl480
\cf0 name2@gmail.com\cell 
\pard\intbl\itap1\pardeftab720\sl480
\cf0 9875463210\cell \row

など、名前 3 ~ 100 のリストが続きます

期待される出力

配列={(Emp1000,Name1,name1@gmail.com,9874563210),(Emp1010,Name2,name2@gmail.com,9875463210)}

これは、任意の 2 つの文字列の間でデータを取得できるコードです。

-(NSString*)inString:(NSString*)getStringBetweenString1:(NSString*)sub1 String2:(NSString*)sub2 {
     NSLog(@"%@",start);
    NSRange startRange = [orgstr rangeOfString:start];
    if (startRange.location != NSNotFound) {
        NSRange targetRange;
        targetRange.location = startRange.location + startRange.length;
        targetRange.length = [orgstr length] - targetRange.location;   
        NSRange endRange = [orgstr rangeOfString:end options:0 range:targetRange];
        if (endRange.location != NSNotFound) {
            targetRange.length = endRange.location - targetRange.location;
            return [orgstr substringWithRange:targetRange];
        }
    }
    return nil;
}
4

2 に答える 2

0

インデックスも返す上記の関数を変更することで、問題を解決できました。

-(NSArray*)inString:(NSString*)main getStringBetweenString1:(NSString*)sub1 string2:(NSString*)sub2 fromIndex:(long int)indexrange
{
    NSMutableArray *returnArray=[[NSMutableArray alloc]initWithCapacity:2];
    [returnArray insertObject:@"" atIndex:0];
    [returnArray insertObject:[NSNumber numberWithLong:NSNotFound] atIndex:1];
    NSString *returnString=@"";
    long int start,end;
    start=[self inString:main getIndexOfSubString:sub1 fromIndex:indexrange];
    if(start==NSNotFound)
        return returnArray;
    end=[self inString:main getIndexOfSubString:sub2 fromIndex:start];
     NSLog(@"Start:%ld end:%ld",start,end);
    if(end==NSNotFound)
        return returnArray;

    for(long int i=start+[sub1 length];i<end;i++)
    {
        returnString=[returnString stringByAppendingString:[NSString stringWithFormat:@"%c",[main characterAtIndex:i]]];
    }
    NSLog(@"%@",returnString);
    [returnArray insertObject:returnString atIndex:0];
    [returnArray insertObject:[NSNumber numberWithLong:end] atIndex:1];

    return returnArray;
}


-(long int)inString:(NSString*)s getIndexOfSubString:(NSString*)s1 fromIndex:(long int)fromIndex
{
    for(int i=fromIndex;i<[s length];i++)
    {
        if([s characterAtIndex:i]==[s1 characterAtIndex:0])
        {
            int j=i+1,k=1;
            for(k=1;k<[s1 length];k++,j++)
            {
                if([s characterAtIndex:j]!=[s1 characterAtIndex:k])
                    break;
            }
            if(k==[s1 length])
                return i;
        }
    }
    return NSNotFound;
}

-(void)getContactsFromFile:(NSString*)fileName
{
    NSString* path = [[NSBundle mainBundle] pathForResource:fileName
                                                     ofType:@"txt"];
    NSString* content = [NSString stringWithContentsOfFile:path
                                                  encoding:NSUTF8StringEncoding error:NULL];


 for(long int j=3227;;) //3227 is index at which it should start
    {
        NSArray *cellobj=[self inString:content getStringBetweenString1:@"\\cf0" string2:@"\\cell" fromIndex:j];
        j=[[cellobj objectAtIndex:1] integerValue];
           if(j==NSNotFound)
            break;
         NSLog(@"String:%@",[cellobj objectAtIndex:0]); // prints all details of table topics individually

        NSString *test=[cellobj objectAtIndex:0];
}

//Do something with test
}
于 2013-08-12T05:40:23.900 に答える