나는 Stackoverflow에서 비슷한 문제가있는 많은 게시물을 보았지만 여전히 plist를 쓰거나 읽을 수없는 이유를 알 수 없습니다. 내 plist를 앱에로드하는 방법은 다음과 같습니다. plist를 리소스 폴더가 아닌 장치의 문서 폴더에 복사해야합니다. 맞나요 ?
-(void)loadPlist:(NSString*)plistString {
NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.plist", plistString]];
NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath:path]) {
NSString *bundle = [[NSBundle mainBundle]pathForResource:plistString ofType:@"plist"];
[fileManager copyItemAtPath:bundle toPath:path error:&error];
} else {
NSLog(@"%@ already exists",path);
}
}
이것은 내 plist에 쓰는 방법입니다.
-(void)writeScore:(NSString*)objectstring forPlayer:(int)playerTag {
switch (playerTag) {
case 1:
NSLog(@"Wrote to 1");
holeInt = [P1hole_Label.text integerValue];
plistpath = [[NSBundle mainBundle]pathForResource:@"Scores" ofType:@"plist"];
plistdata = [[NSMutableDictionary alloc]initWithContentsOfFile:plistpath];
[plistdata setObject:[NSString stringWithString:objectstring] forKey:[NSString stringWithFormat:@"Hole %i", holeInt]];
[plistdata writeToFile:plistpath atomically:YES];
break;
Etc.
그리고 여기에 내가 plist를 읽는 방법이 있습니다.
-(void)createNewHoleLabel:(NSString*)plistString andSetX:(int)x {
//SetX; 0 = P1, 1 = P2 etc.
UILabel *label = [UILabel new];
[label setFrame:CGRectMake(80 + 53 * x, 93 + 26 * integer, 50, 25)];
NSString *path = [[NSBundle mainBundle]pathForResource:plistString ofType:@"plist"];
NSMutableDictionary *dict = [[NSMutableDictionary alloc]initWithContentsOfFile:path];
label.text = [dict objectForKey:[NSString stringWithFormat:@"Hole %i", integer + 1]];
[label setAdjustsFontSizeToFitWidth:YES];
[label setTextAlignment:NSTextAlignmentCenter];
integer++;
[scrollview addSubview:label];
}
당신이 나를 도울 수 있기를 바랍니다. 필요한 경우 자세한 내용을 문의하십시오.
에 writeScore:forPlayer:
plistpath = [[NSBundle mainBundle]pathForResource:@"Scores" ofType:@"plist"];
...
[plistdata writeToFile:plistpath atomically:YES];
장치에서 수행 할 수없는 앱의 번들에 쓰려고합니다. 문서 디렉토리를 작성해야합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다