0

私はまず SO が初めてで、iOS 開発が初めてです。iTunes で CS193P コースを修了し、最初の適切なアプリに取り組む準備ができました。私はプロトタイプをセットアップしましたが、どこから始めるべきかについての参照ポインターが必要です (その自信が必要です)。

アプリの前提は、ユーザーが 2 つの利用可能なリストのうちの 1 つにエントリを追加できるようにすることです。与えるリストまたは受け取るリストのいずれか。エントリには、「イベントの名前」、「名前」、「日付」などが含まれます。もちろん、ユーザーがリストを調べてエントリを表示するオプションもあります。ユーザーが名前、日付、またはイベントのいずれで検索するかを選択できるようにしたいと考えています。

プロトタイプを完全にセットアップしましたが、この種のアプリケーションはアドレス帳に似ていると考えられるのでしょうか? ユーザーは、人の名前を追加する (または連絡先から名前を選択する) などを行うことができます。

ここで非常に基本的な質問をして申し訳ありませんが、本質的に、特定のリストに追加される全体のリストを作成するための適切な参照ポイントはありますか? 私は Modal View Controller とデリゲートに精通しています。私は基本的に、ユーザーが追加した全体を「保存」するために何を使用すべきか疑問に思っています。Core Data やその他の手法などを使用する必要がありますか?

ありがとう!アミット

4

3 に答える 3

0

あなたの質問は非常に一般的なので、ここに私の一般的な答えがあります.Core Dataを使用してリストを保存し、NSFetchedResultsControllerを使用してそれらを表示することをお勧めします. また、無料の Sensible TableView フレームワークを確認することをお勧めします。これは、手元にあるタスクと非常によく似たタスクを自動化するために定期的に使用しています。

于 2013-05-06T19:40:09.307 に答える
0

リストを保存するために NSKeyedArchivers を使用しています。 http://developer.apple.com/library/ios/#documentation/cocoa/reference/foundation/Classes/NSKeyedArchiver_Class/Reference/Reference.html

管理が非常に簡単で、すべてのデータを簡単に保存、保存、取得できます。

例は、オブジェクトのリスト (NSMutableArray) です。各オブジェクトは NSCoding を実装し、initWithCoder: および encodeWithCoder: 関数を持っています。

例(オブジェクトに名前と日付のプロパティがあると仮定)

- (id) initWithCoder:(NSCoder *){
    self = [super init];
    if (self){
        [self setName:[aDecoder decodeObjectForKey:@"name"]];
        [self setDate:[aDecoder decodeObjectForKey:@"date"]];
    }
    return self;
}
- (void) encodeWithCoder:(NSCoder *)aCoder{
    [aCoder encodeObject:name forKey:@"name"];
    [aCoder encodeObject:date forKey:@"date"];
}

次に、これらのオブジェクトを追加する NSMutableArray を次の関数を持つもので管理し、saveChanges を呼び出すだけです。

- (NSString *) itemArchivePath{
    NSArray *documentDirectories = NSSearchPathForDirectoriesInDomains(NSDocumentsDirectory, NSUserDomainMask, YES);
    NSString *documentDirectory = [documentDirectories objectAtIndex:0];
    return [documentDirectory stringByAppendingPathComponent:@"myArchiveName.archive"];
}
- (BOOL) saveChanges{
    NSString *path = [self itemArchivePath];
    return [NSKeyedArchiver archiveRootObject:myList toFile:path];
}

これら 2 つの関数を実装すると、saveChanges を呼び出すだけで済みます。

また、次の起動後に後でリストを取得するには、マネージャーの init で次のようにします。

- (id) init{
    self = [super init];
    if (self){
        NSString *path = [self itemArchivePath];
        myList = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
        // If the array hadn't been saved previously, create a new empty one
        if (!myList){
            myList = [[NSMutableArray Alloc] init];
         }
    }
}
于 2013-05-06T17:01:16.420 に答える