标签: nsarray

从NSArray获得子阵列最优雅的方法是什么?

在Python中,我可以像这样容易得到一个子阵列

>> v1 = ['a', 'b', 'c', 'd']
>> v2 = v1[1:]
>> v2
['b', 'c', 'd']
Run Code Online (Sandbox Code Playgroud)

如何优雅地在Objective-C中完成相同的操作?

起初我虽然这种方法可以完成这项工作:

- (void)getObjects:(id[])aBuffer range:(NSRange)aRange
Run Code Online (Sandbox Code Playgroud)

但它将对象复制到缓冲区位置.我需要将它们添加回另一个实例NSArray.另外,编译器抱怨保留/释放属性,我真的不太愿意处理.

    id* objs;

    NSRange rng = NSMakeRange(1, [v1 count] - 1);

    [v1 getObjects:objs range:rng]; # Sending '__strong id *' 
                                    # to parameter of type '__unsafe_unretained id *'  
                                    # changes retain/release properties of pointer
Run Code Online (Sandbox Code Playgroud)

那么,还有更优雅的方式吗?或者除了迭代之外别无他法objectEnumerator?

cocoa cocoa-touch objective-c nsarray

3
推荐指数
1
解决办法
2359
查看次数

Swift:iOS Paypal 响应解析为 NSDictionary/NSArray

我在 Xcode for iOS 中使用 PayPal sdk

我设法成功地使用它。现在,我从服务器收到以下响应:

代码:

self.resultText = completedPayment.confirmation
println(self.resultText)
Run Code Online (Sandbox Code Playgroud)

结果:

[response: {
"create_time" = "2015-07-13T17:52:31Z";
id = "PAY-NONETWORKPAYIDEXAMPLE123";
intent = sale;
state = approved;
}, 

client: {
environment = mock;
"paypal_sdk_version" = "2.11.1";
platform = iOS;
"product_name" = "PayPal iOS SDK";
}, 

response_type: payment]
Run Code Online (Sandbox Code Playgroud)

我的问题是,我只想将所有数据结果解析并访问到 NSDictionary 和/或 NSArray

xcode json nsdictionary nsarray swift

3
推荐指数
1
解决办法
942
查看次数

指定 NSDictionary 条目的值类型

对于NSArray,Objective-C 允许我们指定要存储在数组中的值的类型。例如,我可以声明一个 的数组,NSString如下所示:

NSArray<NSString*> *arrayOfStrings;
Run Code Online (Sandbox Code Playgroud)

虽然编译器和运行时环境不一定强制执行,但这样的指示对于可读性和稍微简单的代码语法来说都很方便。

我想知道是否存在这样的语法NSDictionary。例如,要指定字典中的值类型,是否存在类似以下内容:

NSDictionary<UIImage*> *imageMappings;
Run Code Online (Sandbox Code Playgroud)

其中字典的值被指定为类型UIImage。

附加问题:

可以指定密钥类型吗NSDictionary?

如果可能,如何在没有键类型的情况下指定值类型?

是否有其他常见的数据结构Foundation具有这种通用参数化?

generics objective-c nsdictionary nsarray

3
推荐指数
1
解决办法
4860
查看次数

iOS Swift 3将NSArray值存储到领域

在我的应用程序中,我们使用Realm Storage在本地存储值。我可以将数组值存储为字符串。但不能将值存储和检索为数组。是否可以将NSArray值存储到Realm对象并将其检索为NSArray。这是我用来存储字符串值的代码:

class PracticeView: Object
{
    dynamic var PracticeArray = ""
} 
Run Code Online (Sandbox Code Playgroud)

和用法:

let realm:Realm = try! Realm()
let PracticeDetails = PracticeView()
PracticeDetails.PracticeArray = "Test String Values"
try! realm.write
{
   realm.add(PracticeDetails)
}
print("Values In Realm Object: \(PracticeDetails.PracticeArray)")

//Result Will Be
Values In Realm Object: Test String Values
Run Code Online (Sandbox Code Playgroud)

realm nsarray ios swift3 rlmarray

3
推荐指数
1
解决办法
1197
查看次数

Swift 将不同类型组合成一个数组来显示 UITableView 的数据

我有 tableview,我需要在其中显示几个部分。你应该把这张表想象成你的歌曲的播放列表。在顶部的第一部分中,我需要显示一个带有按钮的单元格,它将向播放列表添加更多歌曲,tableview 的其他部分是音乐类别的标题(如流行、摇滚等)。这些部分中的每一个都包含作为歌曲名称的单元格。

我的歌曲叫一个这样的数组:var songsGroups = [SongGroup]。这实际上是我的数据源。

SongGroup 包含几个属性:

var categoryName: String
var songs: [Songs]
Run Code Online (Sandbox Code Playgroud)

但问题出现在下一个层面。我每次都需要检查 indexPath.section 并这样做:

if indexPath.section == 0 {
// this is a section for ADD NEW SONG BUTTON cell no need in header title as there is no data repression only static text on the cell.
} else {
var musicCategoryName = songsGroups[indexPath.seciton - 1]. categoryName
headerTitle.title = musicCategoryName
}
Run Code Online (Sandbox Code Playgroud)

正如你看到的,通过添加这个很酷的-1神奇数字,我的代码变得神奇了。我重播根本不喜欢。

作为一个肯定的想法,我可以尝试将我的 ADD NEW SONG BUTTON 部分(通过添加一些额外的对象)与songsGroups数组结合起来,并为此目的创建 NSArray。就像你记得的那样在 Objective-C …

arrays uitableview nsarray ios swift

3
推荐指数
1
解决办法
418
查看次数

Objc_msgSend和app崩溃

当我尝试在模拟器(3.1.3,Xcode 3.1.4)上启动我的应用程序时,它显示我objc_msgSend并且应用程序无法启动.这只发生在我分配NSMUtable数组时 这是我的代码部分,在viewDidLoad中,

 -(void)viewDidLoad{

   locationArray = [[NSMutableArray alloc] initWithObjects:@"new delhi", @"faridabad",@"meerut"];
   str1=[locationArray objectAtIndex:0];
   str2=[locationArray objectAtIndex:1];

      [super viewDidLoad];
 } 
Run Code Online (Sandbox Code Playgroud)

然后我想在以下方法中使用locationArray对象;

 -(CLLocationCoordinate2D) addressLocation1{

double latitude = 0.0;
double longitude = 0.0;
NSString *str= [locationArray NSString *str= [locationArray objectAtIndex:0];

    //NSString *str= @"new delhi"

NSString *urlString = [NSString stringWithFormat:@"http://maps.google.com/maps/geo?q=%@&output=csv", 
                       [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSString *locationString = [NSString stringWithContentsOfURL:[NSURL URLWithString:urlString]];
NSArray *listItems = [locationString componentsSeparatedByString:@","];


if([listItems count] >= 4 && [[listItems objectAtIndex:0] isEqualToString:@"200"]) {
    latitude = [[listItems objectAtIndex:2] doubleValue];
    longitude = [[listItems objectAtIndex:3] doubleValue];
}
else …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c nsarray ios

2
推荐指数
1
解决办法
1050
查看次数

UISearchBar和NSMutableArray的问题

我有一个带有搜索栏的tableview.我想搜索我的整个核心数据库.

我在这里将所有内容加载到数组中:

NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"Entity" inManagedObjectContext:managedObjectContext]; 
NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease]; 
[request setEntity:entityDescription]; 
NSError *error = nil; 
NSArray *array = [managedObjectContext executeFetchRequest:request error:&error];   
self.myArray = array;
Run Code Online (Sandbox Code Playgroud)

我正在使用此方法搜索,但收到错误:

- (void) searchTableView {

    NSString *searchText = searchBar.text;
    NSMutableArray *searchArray = [[NSMutableArray alloc] init];

    for (NSDictionary *dictionary in myArray)
    {
        NSString *value = [dictionary objectForKey:@"name"];
        [searchArray addObject:value];
    }

    for (NSString *sTemp in searchArray)
    {
        NSRange titleResultsRange = [sTemp rangeOfString:searchText options:NSCaseInsensitiveSearch];

        if (titleResultsRange.length > 0)
            [copyListOfItems addObject:sTemp];
    }
    [searchArray release]; …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c uisearchbar nsarray ios

2
推荐指数
1
解决办法
811
查看次数

NSArray的前三项成为NSString?

将数组中前三个对象(或者数组有多大的1或2个)转换成逗号分隔的字符串的最有效方法是什么.我觉得有一种方法可以解决这个问题,但我无法解决这个问题

对象是Bands,存储在bandArray中,每个band的属性包括bandName.

所以输出就像是

String
"Abba"                    <- when there is one object
"Abba, Kiss"              <- when there is two objects
"Abba, Kiss, Nirvana"     <- when there is three objects
"Abba, Kiss, Nirvana"     <- when there is four objects. after three, names are ignored
Run Code Online (Sandbox Code Playgroud)

iphone objective-c nsstring nsarray ios

2
推荐指数
1
解决办法
627
查看次数

NSMutableArray与NSMutableDictionary的一个奇怪问题

我有一个XML解析器,它将XML文件中的所有信息(作为项目资源附加)解析为集合.我第一次通过NSMutableArray完成它,然后我将其转换为NSMutableDictionary,一切正常.在那之后,我意识到没有必要拥有NSMutableArray; 我只需要将XML直接解析为NSMutableDictionary.我做了它(它只是一个属性和我向对象添加一个对象的方式),但问题是我现在泄漏了.非常奇怪的泄漏.它可能发生而且不可能发生.每次它发生时都会说它有关于散列和键/值问题的东西.部分代码:

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
        self.currentElement = elementName;
        // category
        if(self.targetBranch==XML_KEY_CATEGORY && [elementName isEqualToString:XML_KEY_CATEGORY]) {
            self.categoryItem = [[CategoryItem alloc] initWithId:[attributeDict objectForKey:@"id"] andParentId:[attributeDict objectForKey:@"parentId"]];
            //NSLog(@"didStartElement with id %@",self.categoryItem.categoryId);
        }
    ...
        }

        - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
        ...
            // categories
            if (self.targetBranch==XML_KEY_CATEGORY && [self.currentElement isEqualToString:XML_KEY_CATEGORY]) {
                //NSLog(@"adding category to array");
                if (self.categoryItem.categoryName)
                    self.categoryItem.categoryName = [NSString stringWithFormat:@"%@%@",self.categoryItem.categoryName,string]; //[string copy];
                else
                    self.categoryItem.categoryName = string; //[string copy];
        ...
        }


        - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString …
Run Code Online (Sandbox Code Playgroud)

iphone memory-leaks objective-c nsdictionary nsarray

2
推荐指数
1
解决办法
489
查看次数

如何将NSArray复制到另一个NSArray?

我有很多不同NSArrays,根据用户的选择我希望其中一个被复制到一个新的NSArray.如何将一个复制NSArray到另一个?

objective-c nsarray

2
推荐指数
2
解决办法
8997
查看次数