1

これは、plist でのデータの取得に関する最初のクエリに対するフォローアップの質問です。現在、ランダムな画像呼び出しを使用して、ビューで行われたユーザーのタッチを検出することができました (phytonquick のおかげです)。

CGPoint currentTouchLocation = [currentTouch locationInView:self];  

ユーザーがビュー内のランダム画像に触れて得た値と、ユーザーが触れたランダム画像と同じ名前の plist データ内に保存された値を比較する方法に問題があります。接触距離を計算する方法を知っているので、ヒットポイントを調整できます。

-(CGFloat) distanceBetween: (CGPoint) point1 and: (CGPoint)point2

   NSMutableDictionary *????? = [self loadDictionaryFromPList: @"?????"];
NSNumber *1stXCoordinate = [????? objectForKey:@"1stXCoordinate"];
NSNumber *1stYCoordinate = [????? objectForKey:@"1stYCoordinate"];
if (1stXCoordinate && 1stYCoordinate)
{
    CGPoint 1stTouchLocation = CGPointMake([lastXCoordinate floatValue], [lastYCoordinate floatValue]);
    CGFloat distanceBetweenTouches = [self distanceBetween: currentTouchLocation and: 1stTouchLocation];
    if (distanceBetweenTouches < 20)
    {
        // do something here 
        NSLog(@"You hit it.");
    }
}

また、plist データをどのように作成すればよいかわかりません。私はそれのサンプル(「iphone 3 dev」など)でいくつかの本を読みましたが、私が見たサンプルのほとんどがテーブルビューの目的である場合、特にそれを理解することはできません. これは私が私のplistをレイアウトする方法です:

randImage <-- callout array
    p1.jpg <-- image represented by array
        tap1 <-- Array
            item 1 - x1 coordinate <-- Number
            item 2 - y1 coordinate <-- Number
            item 3 - x2 coordinate <-- Number
            item 4 - y2 coordinate <-- Number
            item 5 - x3 coordinate <-- Number
            item 6 - y3 coordinate <-- Number
        tap2 <-- Array
            item 1 - x1 coordinate <-- Number
            item 2 - y1 coordinate <-- Number
            item 3 - x2 coordinate <-- Number
            item 4 - y2 coordinate <-- Number
    p2.jpg <-- image represented by array
        tap1
            item 1....etc

誰かがこれを行う方法について正しい道を教えてください。ありがとうございました。

4

4 に答える 4

4

NSDictionaryを使用してplistから値を読み書きする2つの方法を次に示します。

- (NSMutableDictionary*)dictionaryFromPlist {
    NSString *filePath = @"myPlist.plist";
    NSMutableDictionary* propertyListValues = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath];
    return [propertyListValues autorelease];
}

- (BOOL)writeDictionaryToPlist:(NSDictionary*)plistDict{
    NSString *filePath = @"myPlist.plist";
    BOOL result = [plistDict writeToFile:filePath atomically:YES];
    return result;
}

次に、コードブロックのどこかにあります。

// Read key from plist dictionary
NSDictionary *dict = [self dictionaryFromPlist];
NSString *valueToPrint = [dict objectForKey:@"Executable file"];
NSLog(@"valueToPrint: %@", valueToPrint);

// Write key to plist dictionary
NSString *key = @"Icon File";
NSString *value = @"appIcon.png";
[dict setValue:value forKey:key];

// Write new plist to file using dictionary
[self writeDictionaryToPlist:dict];
于 2009-10-24T05:41:43.343 に答える
1

これを試して:

-(void)add:(NSRunningApplication *) app { 
if ([self contains:app]) return; 
[self.apps addObject:app.localizedName]; 
 [self.apps writeToFile:self.dataFile atomically:YES];
}
于 2011-04-01T15:41:10.777 に答える
0

ドキュメントを調べてください-initWithContentsOfFile:

標準であれば、plist から辞書と配列を作成できるはずです。

この場合、呼び出してから、必要なデータを取得するために[[NSDictionary alloc] initWithContentsOfFile:@"path/to/plist"];使用できます。-valueForKey:

于 2009-10-22T10:12:15.953 に答える
0

plist の部分は、他の回答でよく説明されています。

ただし、保存/読み取りを行う場合は、次の非常に便利な方法を使用することCGPoint強くお勧めします。詳細については、Apple のドキュメントを参照してくださいCGPointFromStringNSStringFromCGPoint

CGPointEqualToPointCGRectContainsPointCGRectIntersectsRectまたはCGRectContainsRect...などのグラフィックス構造を操作する他のユーティリティもあることに注意してください。詳細については、 Apple のドキュメントを参照してください。

于 2011-04-01T15:52:58.280 に答える