gpt4 book ai didi

android - iOS 中的 R.array.string 等价物

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:17:12 26 4
gpt4 key购买 nike

我正在开发一个 iOS 应用程序,之前只在 android 中开发。在 android 中,可以将字符串和字符串数组存储在资源文件中,然后在以后引用它们。这使得实际代码看起来更整洁。有没有办法在 iOS 中执行此操作?

最佳答案

您可以将数据存储在一个 plist 中,然后将其反序列化为一个字典(或者甚至只是一个数组,如果您不需要灵活的话)。有关文档,请参阅 https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSPropertyListSerialization_Class/Reference/Reference.html#//apple_ref/occ/clm/NSPropertyListSerialization/propertyListWithData:options:format:error 上有关 NSPropertyListSerialization 的类文档:

例如,如果您有以下名为 my_resources.plist 的 plist 文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>MyStringArray</key>
<array>
<string>String One</string>
<string>String Two</string>
</array>
</dict>
</plist>

您可以加载它(假设它在包中):

NSError* error = nil;
NSURL* resourceFile = [[NSBundle mainBundle] URLForResource:@"my_resources" withExtension:@"plist"];
NSData* resourceData = [NSData dataWithContentsOfURL:resourceFile options:0 error:&error];
if (resourceData) {
NSDictionary* resources = [NSPropertyListSerialization propertyListWithData:resourceData options:0 format:NULL error:&error];
if (resources) {
NSArray* myArray = resources[@"MyStringArray"];
NSString* stringOne = myArray[0]; // returns "String One"
NSString* stringTwo = myArray[1]; // returns "String Two"
// do something with the resources
} else {
NSLog(@"Error: Could not read plist data from %@: %@", resourceFile, error);
}
} else {
NSLog(@"Error: Could not read file data at %@: %@", resourceFile, error);
}

关于android - iOS 中的 R.array.string 等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20306952/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com