2010-10-13 8 views
18

Web servislerini temel alan bir uygulama yapıyorum. Bunun için .plist içinde bir dize özelliği eklemem gerekiyor ve kodda ihtiyaç duyduğumda .plist değerini almam gerekiyor. Bu konuda bana yardımcı olabilir misiniz? Ayrıcaiphone sdk içindeki .plist değerlerini nasıl ekleyebilir ve alabilirim

NSString *path = [[NSBundle mainBundle] pathForResource: @"YourPLIST" ofType: @"plist"]; 
NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile: path]; 
id obj = [dict objectForKey: @"YourKey"]; 
+0

olası bir kopyasının [NSMutableArray'a plist'ten veri alma ve NSMutableArray'ı aynı plist iPhone'a yazma] için olası bir kopyasını kullanabilirsiniz (http://stackoverflow.com/questions/9193363/data-from-plist-to-nsmutablearray-ve-yazma-the-nsmutablearray-to-aynı) – Monolo

+0

[Bu bağlantı] 'ye bakın (http://www.iphoneexamples.com/) .Bu çok yardımcı olacaktır senin için. Herşey gönlünce olsun. – Warrior

cevap

29

bir kod örneği
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"Sample.plist"]; 
+1

Merhaba Yolun null olabilir, lütfen bana yardım edin – sekhar

+0

Plist dosyanız projeye eklenmeli, daha sonra yukarıdaki kodda tam adını (case de dahil olmak üzere) ayarlamanız gerekir. – jv42

+0

Birden fazla katmana sahip plistler, bunun gibi nedir? http://i.imgur.com/bWNM3Va.png –

15
NSBundle* mainBundle = [NSBundle mainBundle];  

// Reads the value of the custom key I added to the Info.plist 
NSString *value = [mainBundle objectForInfoDictionaryKey:@"key"]; 

//Log the value 
NSLog(@"Value = %@", value); 

// Get the value for the "Bundle version" from the Info.plist 
[mainBundle objectForInfoDictionaryKey:@"CFBundleVersion"]; 

// Get the bundle identifier 
[mainBundle bundleIdentifier]; 
5
NSURL *url = [[NSBundle mainBundle] URLForResource:@"YOURPLIST" withExtension:@"plist"]; 
NSArray *playDictionariesArray = [[NSArray alloc ] initWithContentsOfURL:url]; 

NSLog(@"Here is the Dict %@",playDictionariesArray); 

veya kullanabilirsiniz şu

: Burada
2

Plist'ten alın çok basittir. How to write data in plist?

Ama yalnızca uygulama sende bazı mesajı kaydetmek isterseniz, NSUserDefaults iyi yoludur:

NSString *path = [[NSBundle mainBundle] pathForResource:@"SaveTags" ofType:@"plist"]; 
if (path) { 
    NSDictionary *root = [NSDictionary dictionaryWithContentsOfFile:path]; 
} 

Bir plist bir şey eklemek istiyorsanız, belki burada cevap bulabilirsiniz.

0

Bunu yapamazsınız. IOS veya Mac OS olsun, herhangi bir Bundle salt okunur, sadece okuyabilir ve dosyalar oluşturamaz, bir dosyadaki dosyaları yazamaz veya bir şey yapamazsınız. Bu, Apple'ın Güvenlik özelliklerinin bir parçasıdır. NSDocumentsDirectory uygulamasını kullanarak, uygulamanız için gerekenleri okuyup yazabilir ve